Dlaczego wiadomości przepełnione emoji mogą spowalniać działanie Twojej aplikacji mobilnej

Czaty wypełnione emoji mogą po cichu obniżać prędkość Twojej aplikacji. Oto techniczny powód oraz jak sprawdzić, czy to Twoje połączenie jest prawdziwym winowajcą.

Przekazujesz wiadomość na czacie grupowym. W ciągu kilku sekund wątek eksploduje reakcjami, naklejkami i ścianą emoji. Potem Twoja aplikacja się zawiesza, zacina lub ładuje resztę rozmowy przez wieczność. Restartujesz, zakładasz, że to błąd, i idziesz dalej. Ale prawdziwe wyjaśnienie jest ciekawsze niż usterka oprogramowania i ma wszystko wspólnego z tym, jak emoji faktycznie działają pod maską.

Kluczowe wnioski:

  • Każde emoji, które nie jest przechowywane na Twoim urządzeniu, musi zostać pobrane z zdalnego serwera, dodając opóźnienia do każdego ładowania wiadomości.
  • Pojedyncze nowoczesne emoji może być obsługiwane przez wiele zasobów graficznych na różnych platformach i rozmiarach wyświetlania.
  • Gdy dziesiątki nieznanych emoji gromadzą się w jednym wątku, skumulowane żądania sieciowe szybko się sumują.
  • Słabe lub niestabilne połączenia mobilne znacząco pogłębiają problem.
  • Wykonanie testu szybkości połączenia mobilnego pomoże Ci określić, czy to Twoje połączenie, a nie aplikacja, powoduje spowolnienie.

Emoji to nie tylko znaki tekstowe

Większość ludzi traktuje emoji jako prosty tekst. Wpisz skrót, pojawia się żółta uśmiechnięta buźka. Gotowe. Ale za tą małą grafiką dzieje się o wiele więcej, niż możesz się spodziewać.

Dlaczego wiadomości przepełnione emoji mogą spowalniać działanie Twojej aplikacji mobilnej

Emoji istnieją na przecięciu dwóch światów. Pierwszym jest standard Unicode, który przypisuje każdemu emoji określony punkt kodowy, zasadniczo unikalny numer ID. Drugim jest warstwa wizualnego renderowania i tutaj robi się skomplikowanie. Według standardu znaków Unicode, specyfikacja Unicode obejmuje obecnie ponad 3600 punktów kodowych emoji, a wiele z nich ma wiele wariantów wizualnych.

WhatsApp używa własnej grafiki emoji. Slack używa innego zestawu. Apple, Google i Microsoft mają odrębne biblioteki obrazów. Kiedy więc otrzymujesz wiadomość wypełnioną emoji od kontaktu na innym urządzeniu lub w innej wersji aplikacji, Twój telefon może nie mieć lokalnych kopii tych dokładnych obrazów. Musi je pobrać z serwera dostarczającego treści. To pobieranie zajmuje czas. Przy szybkim połączeniu jest niezauważalne. Przy wolnym lub przeciążonym – kumuluje się.

Problem pobierania zasobów, wyjaśniony

Pomyśl o swojej aplikacji do czatowania jak o przeglądarce. Za każdym razem, gdy ładujesz stronę internetową, Twoja przeglądarka pobiera obrazy, czcionki i skrypty. Buforowanie oznacza, że po pierwszej wizycie wiele z tych plików jest przechowywanych lokalnie, więc nie musisz ich pobierać ponownie. Aplikacje do czatowania działają w ten sam sposób.

Gdy po raz pierwszy napotkasz konkretne emoji w konkretnym formacie, Twoja aplikacja może potrzebować pobrać ten zasób z serwera. Nowoczesne zestawy emoji zawierają warianty w wysokiej rozdzielczości, różne rozmiary dla miniatur i pełnego wyświetlania, modyfikatory odcienia skóry oraz sekwencje kombinacji. Emoji rodziny na przykład łączy wiele znaków w jeden złożony obraz.

Emojiguide.com śledzi szeroki katalog tych zasobów, a sama liczba odrębnych plików graficznych obsługujących pojedyncze emoji na różnych platformach jest uderzająca. Zwykły kciuk w górę to nie jeden obraz. To potencjalnie dziesiątki, rozłożone na odcienie skóry, wersje platform i rozmiary wyświetlania. Gdy wątek zawiera 40 lub 50 różnych emoji od kilku nadawców, możesz wywoływać 40 lub 50 oddzielnych żądań zasobów w szybkiej sukcesji.

Dlaczego połączenia mobilne pogarszają sprawę

Stacjonarne łącze szerokopasmowe radzi sobie z dziesiątkami małych równoczesnych żądań bez wysiłku. Połączenia mobilne to inna historia. Siła sygnału komórkowego waha się w zależności od Twojej lokalizacji, liczby pobliskich użytkowników współdzielących tę samą wieżę, materiałów budowlanych blokujących sygnał oraz przeciążenia sieci w godzinach szczytu.

Każde pobranie zasobu wiąże się z podróżą w obie strony. Twój telefon wysyła żądanie do serwera, serwer je przetwarza, a odpowiedź wraca. Przy stabilnym połączeniu LTE lub 5G pojedyncza podróż w obie strony może zająć od 20 do 50 milisekund. Przy słabym połączeniu 3G lub na zatłoczonym stadionie może się wydłużyć do 300, 500, a nawet 1000 milisekund na żądanie.

Pomnóż to przez 40 emoji w jednym wątku. Nawet jeśli każde żądanie kosztuje dodatkowe 100 milisekund, masz cztery pełne sekundy dodatkowego opóźnienia, zanim wątek w pełni się wyrenderuje. To jest to zacinanie się i zawieszanie, które do tej pory obwiniałeś o aplikację.

Jak buforowanie pomaga i gdzie zawodzi

Buforowanie jest wbudowanym rozwiązaniem tego problemu. Gdy Twoja aplikacja pobierze zasób emoji, przechowuje go lokalnie i używa ponownie przy następnym pojawieniu się tego emoji. Jeśli regularnie rozmawiasz z tymi samymi osobami, używając tych samych emoji, Twój bufor się buduje, a opóźnienie znika.

Problemy pojawiają się w kilku konkretnych sytuacjach:

  • Dołączasz do nowego czatu grupowego z nieznajomymi kontaktami, które używają emoji, których wcześniej nie spotkałeś.
  • Aktualizacja aplikacji czyści lokalny bufor, wymuszając świeże pobranie wszystkich zasobów.
  • Zmieniasz urządzenie lub ponownie instalujesz aplikację, zaczynając całkowicie od zera.
  • Emoji to złożone sekwencje lub nowsze dodatki, które Twoja obecna wersja aplikacji obsługuje inaczej niż wersja nadawcy.

W każdym z tych przypadków Twój telefon wraca do wykonywania żądań na żywo do serwera po obrazy, których nie ma przechowywanych lokalnie. Przy silnym połączeniu prawie tego nie zauważysz. Przy słabym – doświadczenie szybko się pogarsza.

Identyfikacja prawdziwego wąskiego gardła

Tutaj wiele osób popełnia błąd. Gdy ich aplikacja zacina się podczas wątku pełnego emoji, obwiniają aplikację, zakładają, że serwer padł, lub uznają, że ich telefon jest już za stary. Czasami te wyjaśnienia są słuszne. Ale często wąskim gardłem jest po prostu prędkość połączenia.

Sposób, aby to sprawdzić, jest prosty. Zanim obwiniasz aplikację, wykonaj test szybkości połączenia mobilnego, aby zobaczyć rzeczywistą prędkość pobierania, wysyłania i ping w czasie rzeczywistym. Zwróć szczególną uwagę na odczyt pingu. Ping mierzy czas potrzebny na podróż małego pakietu danych z telefonu do serwera i z powrotem, wyrażony w milisekundach. Ping poniżej 50ms jest solidny. Powyżej 150ms zaczniesz zauważać opóźnienia w aplikacjach intensywnie korzystających z zasobów. Powyżej 300ms nawet skromny wątek pełen emoji będzie działał ospale.

Jeśli Twój ping jest wysoki lub prędkość pobierania jest znacznie niższa niż obiecuje Twój plan, winowajcą jest połączenie. Przejdź w obszar o lepszym zasięgu sygnału, przełącz się z danych mobilnych na Wi-Fi lub spróbuj przeprowadzić rozmowę o innej porze dnia, gdy przeciążenie sieci jest mniejsze.

Różnice między platformami i co oznaczają dla Ciebie

Nie wszystkie aplikacje do czatowania obsługują zasoby emoji w ten sam sposób. Niektóre agresywnie pobierają z wyprzedzeniem i buforują zasoby w tle. Inne ładują wszystko na żądanie, co zwiększa opóźnienie przy wolniejszych połączeniach, ale oszczędza dane mobilne.

WhatsApp dość agresywnie kompresuje zasoby multimedialne, aby utrzymać płynność działania przy słabych połączeniach. Slack, zaprojektowany głównie do użytku na komputerze, zwykle priorytetowo traktuje jakość obrazu i ładuje więcej zasobów na wątek. To jeden z powodów, dla których Slack może wydawać się zauważalnie cięższy na urządzeniach mobilnych, szczególnie na kanałach, gdzie ludzie często publikują reakcje emoji przez cały dzień.

Telegram plasuje się gdzieś pośrodku, oferując konfigurowalne ustawienia pobierania multimediów, które pozwalają użytkownikom zdecydować, ile chcą wstępnie buforować. Zrozumienie, której aplikacji używasz i jak zarządza ona zasobami, pomaga ustawić realistyczne oczekiwania i pomaga zdecydować, kiedy spowolnienie jest warte zbadania.

Opóźnienie sieciowe i jak się kumuluje

Koncepcją techniczną leżącą u podstaw tego wszystkiego jest opóźnienie sieciowe, czyli opóźnienie między wysłaniem żądania a nadejściem odpowiedzi. Opóźnienie kumuluje się, gdy wiele żądań musi być wykonanych sekwencyjnie, a nie równolegle. Większość nowoczesnych aplikacji grupuje żądania lub używa multipleksowania HTTP/2, aby obsłużyć kilka naraz, ale są ograniczenia. Gdy trzeba załadować jednocześnie dziesiątki zasobów, nawet połączenia multipleksowane odczuwają obciążenie na łączach mobilnych o niskiej przepustowości lub wysokim opóźnieniu.

Dlatego ten sam wątek emoji, który ładuje się błyskawicznie w domu na Wi-Fi, może być nieznośnie wolny w pociągu lub w piwnicy. Treść się nie zmieniła. Zasoby są tej samej wielkości. Jedyną zmienną jest jakość połączenia i ta pojedyncza zmienna może zadecydować o różnicy między płynnym doświadczeniem a zamrożonym ekranem.

Co możesz zrobić teraz

Nie musisz akceptować ospałego działania aplikacji. Kilka praktycznych dostosowań robi zauważalną różnicę:

  • Korzystaj z Wi-Fi, gdy to możliwe, do czatów grupowych pełnych emoji, szczególnie w dużych wątkach.
  • Sprawdź wskaźniki sygnału, zanim stwierdzisz, że aplikacja jest zepsuta.
  • Okresowo czyść bufor aplikacji, aby usunąć nieaktualne lub uszkodzone zasoby, a następnie pozwól mu się odbudować przy silnym połączeniu.
  • Ogranicz ustawienia automatycznego pobierania multimediów w aplikacjach takich jak WhatsApp i Telegram, jeśli często przebywasz w obszarach o słabym sygnale.
  • Regularnie aktualizuj swoje aplikacje do czatowania, ponieważ nowsze wersje często zawierają ulepszoną logikę buforowania i lepiej skompresowane biblioteki zasobów.

Dlaczego Twój czat się zacina i co zrobić dalej

Następnym razem, gdy Twój telefon zacznie się zacinać podczas ładowania ruchliwego wątku grupowego, będziesz dokładnie wiedział, co się dzieje. Dziesiątki maleńkich plików graficznych jest żądanych jeden po drugim, podróżując przez połączenie, które może nie być wystarczająco szybkie lub stabilne, aby obsłużyć tę ilość. To nie zawsze wina aplikacji. To często różnica między tym, co Twoje połączenie może dostarczyć, a czego wymaga wątek.

Ta różnica jest mierzalna. Wiedza o tym, na czym stoisz, jest pierwszym krokiem, a zajmuje to mniej niż minutę. Gdy już masz ten obraz, możesz podejmować mądrzejsze decyzje o tym, kiedy rozwiązywać problem z aplikacją, a kiedy po prostu znaleźć lepszy sygnał.