西安一碼通此前報道:用兩天兩夜,將1M圖片優化到100kb
西安健康碼連續兩次崩潰,在互聯網上持續發酵,相關責任人被停了職,算是給了大家一個交代。不過一碼通事件還沒結束,有網友發現在2021年6月份一篇關于一碼通項目的報道中,有夸大“技術難度”的嫌疑。
報道中提及:“為了確保系統運行更高效,他們將一張圖片從1MB壓縮到500KB,再從500KB優化到100KB。”并強調這件事的技術難度,技術人員連續兩天兩夜守在電腦前,最終攻克“難關”。
那么,西安健康碼連崩兩次,是否真的與“圖片壓縮技術”有關呢?
圖片壓縮技術有多難?
首先得先確定這張圖片是否能被壓縮,像健康碼圖片、廣告圖片等等,都屬于可以被壓縮的圖片。手機屏幕大小有限,1MB的圖片與100KB圖片的顯示效果沒有什么區別。
圖片壓縮并不是什么很難的技術,將png轉換成jpg,修改圖片分辨率等等,都可以達到壓縮圖片的效果,不可能用兩晝夜的時間去將一張1MB的圖片優化成100KB。更何況在高頻使用場景下,使用這么大的圖片,本身產品設計上就存在缺陷。
問題的關鍵不在于壓縮圖片難度,而是開發應用程序使用的技術是否過關。
對此,網友提出了一個質疑:二維碼是否在客戶端生成?
要知道,二維碼傳遞的信息都是一串字符,可能是網址、產品信息或者下載鏈接,服務端只需將這些字符傳輸給客戶端,再由客戶端生成二維碼圖片即可。這樣一來大小就是1k級別的,根本不需要100KB。
如果采用在服務端生成二維碼圖片,再傳輸給客戶端,這是一種很愚蠢的做法,因為會占用大量的帶寬,同時使用人數一多, 很容易崩潰,一般開發人員都不會采用這種方式。鑒于該報道“兩天兩夜壓縮圖片”的報道,讓許多內行的同學不得不懷疑,一碼通是否會采用這種方式,如果是,連續崩潰兩次也就不奇怪了。
網友經過對一碼通的抓包,發現并沒有出現這種情況。一碼通確實采用的是前端生成二維碼的方式。
顯然,報道中提到的,將1MB優化到100KB的圖片,并非二維碼,而是廣告、logo之類的圖片。
一碼通崩潰的原因
網友通過抓包還是發現了一碼通現存的一些問題,比如在主頁竟然出現了一張87KB的“快訊”圖片,這張圖片還僅僅是某篇文章的縮略圖。
如果在上班高峰期,許多用戶都是第一次打開一碼通頁面,并沒有緩存在本地,服務器勢必產生巨大的壓力,很容易崩潰。
在這種高并發場景下,的確不應該存在這種大圖片。另外一個因素,也可能是一碼通本身的帶寬不夠,不足以支撐用碼高峰期,市民的使用需求。
一碼通到底是技術不過關,還是本身帶寬不夠,其實已經不重要。重要的是我們應該怎么吸取這兩次的教訓,避免再出現這種情況。畢竟疫情期間,無法查看健康碼,不僅會影響出行,還會造成許多間接損失。