爲什麼大量使用表情符號會拖慢手機應用體驗
表情符號密集的聊天記錄可能悄然拖慢應用速度。以下是技術層面的原因,以及如何判斷你的網絡連接是否纔是真正的罪魁禍首。
你在羣聊中發送了一條消息。幾秒鐘內,聊天記錄就被回覆、貼紙和滿屏的表情符號淹沒。然後你的應用卡頓、反應遲緩,或者加載後續對話需要很長時間。你重啓應用,以爲這是軟件故障,然後繼續使用。但真正的解釋比軟件故障更有趣,而且這與表情符號在底層的工作原理密切相關。
關鍵要點:
- 每個未存儲在設備上的表情符號都必須從遠程服務器獲取,這給每次消息加載增加了延遲。
- 一個現代表情符號可能由多個不同平臺和顯示尺寸的圖像資源支持。
- 當幾十個不熟悉的表情符號堆積在同一個聊天記錄中時,累積的往返請求會迅速增加。
- 弱或不穩定的移動連接會顯著放大這個問題。
- 運行移動速度測試有助於你確定是網絡連接而非應用導致了速度變慢。
表情符號不僅僅是文本字符
大多數人把表情符號當作簡單的文本。你輸入一個快捷方式,一個黃色的笑臉就會出現。任務完成。但在這個小圖形背後,發生的事情比你想象的要多得多。
表情符號存在於兩個世界的交匯處。第一個是Unicode標準,它爲每個表情符號分配一個特定的碼點,本質上是一個唯一的ID編號。第二個是視覺渲染層,這就是事情變得複雜的地方。根據Unicode字符標準,Unicode規範現在涵蓋超過3600個表情符號碼點,其中許多有多個視覺變體。
WhatsApp使用自己的表情符號圖形。Slack使用另一套。Apple、Google和Microsoft各自維護着不同的圖像庫。因此,當你從使用不同設備或不同應用版本的聯繫人那裏收到一條充滿表情符號的消息時,你的手機可能沒有這些確切圖像的本地副本。它必須從內容分發服務器獲取它們。這種獲取需要時間。在快速連接上,這幾乎察覺不到。在慢速或擁堵的連接上,延遲就會累積。
資源獲取問題解析
把你的消息應用想象成一個瀏覽器。每次加載網頁時,你的瀏覽器都會下載圖像、字體和腳本。緩存意味着在首次訪問後,許多文件會存儲在本地,這樣你就不必再次下載它們。消息應用的工作原理相同。
當你第一次遇到特定格式的特定表情符號時,你的應用可能需要從服務器拉取該資源。現代表情符號集包括高分辨率變體、用於縮略圖和全尺寸顯示的不同尺寸、膚色修飾符和組合序列。例如,家庭表情符號將多個字符拼接成一個複合圖像。
Emojiguide.com追蹤了這些資源的廣泛目錄,而支持單個表情符號的不同平臺上的不同圖像文件數量驚人。一個簡單的豎起大拇指表情符號不僅僅是一個圖像。它可能有幾十個,分佈在不同的膚色、平臺版本和顯示尺寸上。當一個聊天記錄中包含來自多個發送者的40或50個不同表情符號時,你可能會在短時間內觸發40或50個獨立的資源請求。
爲什麼移動連接會讓情況更糟
有線寬帶連接可以輕鬆處理幾十個同時發生的小請求。移動連接則是另一回事。手機信號強度會根據你的位置、共享同一基站的附近用戶數量、阻擋信號的建築材料以及高峯時段的網絡擁堵情況而波動。
每次資源獲取都涉及一次往返。你的手機向服務器發送請求,服務器處理它,然後響應返回。在穩定的LTE或5G連接上,一次往返可能需要20到50毫秒。在弱的3G連接上,或者在擁擠的體育場裏,每次請求可能會延長到300、500甚至1000毫秒。
將這一點乘以單個聊天記錄中的40個表情符號。即使每次請求只增加額外的100毫秒,在聊天記錄完全渲染之前,你也會面臨整整四秒的額外延遲。這就是你一直歸咎於應用的那些卡頓和凍結。
緩存如何幫助以及它的不足之處
緩存是解決這個問題的內置方案。一旦你的應用下載了一個表情符號資源,它就會將其存儲在本地,並在下次該表情符號出現時重複使用。如果你經常與使用相同表情符號的同一羣人聊天,你的緩存會積累起來,延遲就會消失。
問題出現在以下幾種特定情況中:
- 你加入了一個新的羣聊,其中有你不熟悉的聯繫人,他們使用你之前從未遇到過的表情符號。
- 應用更新清除了本地緩存,迫使所有資源重新下載。
- 你更換設備或重新安裝應用,完全從頭開始。
- 表情符號是複雜的序列或較新的添加項,你當前的應用版本處理它們的方式與發送者的版本不同。
在任何這些情況下,你的手機都會重新向服務器發出實時請求,以獲取本地沒有存儲的圖像。在強連接上,你幾乎不會注意到。在不穩定的連接上,體驗會迅速惡化。
識別真正的瓶頸
這就是很多人出錯的地方。當他們的應用在表情符號密集的聊天記錄中卡頓時,他們會責怪應用,假設服務器宕機,或者認爲手機太舊了。有時這些解釋成立。但通常,瓶頸僅僅是連接速度。
找出問題的方法很簡單。在責怪應用之前,運行一個移動速度測試,實時查看你的實際下載速度、上傳速度和ping值。特別關注ping讀數。Ping測量的是一個小數據包從你的手機到服務器再返回所需的時間,以毫秒爲單位。低於50毫秒的ping是穩定的。超過150毫秒,你會開始注意到資源密集型應用中的延遲。超過300毫秒,即使是表情符號密度適中的聊天記錄也會感覺遲緩。
如果你的ping值很高,或者下載速度遠低於你的套餐承諾值,那麼連接就是罪魁禍首。移動到信號更好的區域,從移動數據切換到Wi-Fi,或者嘗試在網絡擁堵緩解的其他時間進行對話。
平臺差異及其對你的影響
並非所有消息應用都以相同的方式處理表情符號資源。有些應用在後臺積極預取和緩存資源。其他應用則按需加載所有內容,這會在較慢的連接上增加延遲,但節省移動數據。
WhatsApp相當積極地壓縮媒體資源,以便在弱連接上保持流暢。Slack主要設計用於桌面使用,傾向於優先考慮圖像質量,並在每個聊天記錄中加載更多資源。這就是爲什麼Slack在移動設備上感覺明顯更重的原因之一,尤其是在人們整天頻繁發佈表情符號反應的頻道中。
Telegram介於兩者之間,提供可配置的媒體下載設置,讓用戶決定預緩存多少。瞭解你正在使用哪個應用以及它如何管理資源,有助於你設定準確的期望,並幫助你決定何時值得調查速度變慢的原因。
網絡延遲及其累積效應
這一切的核心技術概念是網絡延遲,即請求發送和響應到達之間的延遲。當多個請求必須順序執行而非並行執行時,延遲會累積。大多數現代應用會批量處理請求或使用HTTP/2多路複用技術同時處理多個請求,但存在限制。當需要同時加載幾十個資源時,即使在低帶寬或高延遲的移動鏈路上,多路複用連接也會感到壓力。
這就是爲什麼在Wi-Fi上瞬間加載的同一個表情符號聊天記錄,在火車上或地下室中會感覺慢得難以忍受。內容沒有改變。資源大小相同。唯一的變量是連接質量,而這個變量可能意味着流暢體驗和凍結屏幕之間的區別。
你現在可以做什麼
你不必接受遲緩的應用體驗。一些實用的調整可以帶來明顯的改善:
- 在可能的情況下,對於表情符號密集的羣聊,尤其是大聊天記錄,切換到Wi-Fi。
- 在斷定應用故障之前,先檢查你的信號強度。
- 定期清除應用的緩存,以刪除過時或損壞的資源,然後在強連接上讓它重新構建。
- 如果你經常處於信號弱的區域,在WhatsApp和Telegram等應用中減少媒體自動下載設置。
- 定期更新你的消息應用,因爲較新的版本通常帶有改進的緩存邏輯和更好壓縮的資源庫。
爲什麼你的聊天會卡頓,以及下一步該怎麼做
下次你的手機在加載繁忙的羣聊記錄時卡頓,你就會確切知道發生了什麼。幾十個小圖像文件正在被逐一請求,通過一個可能不夠快或不夠穩定以處理這種流量的連接傳輸。這並不總是應用的錯。這通常是你的連接能提供的內容與聊天記錄需求之間的差距。
這個差距是可以測量的。瞭解你的狀況是第一步,而這隻需不到一分鐘就能查明。一旦你掌握了情況,你就可以做出更明智的決定:何時排查應用問題,何時只需尋找更好的信號。