1 gwiazdka2 gwiazdki3 gwiazdki4 gwiazdki5 gwiazdek (głosów: 1, średnia ocena: 5,00)
Loading...Loading...

Przepływ zdarzeń w aplikacjach offline

W rozdziale:

Przepływ zdarzeń

Od początku rozdziału piszę o aplikacjach sieciowych offline, manifestach oraz buforze offline aplikacji, ale nie podaję żadnych konkretów. Pliki się pobierają, przeglądarki podejmują decyzje i wszystko po prostu działa. Ale ty wiesz swoje, prawda? To znaczy, przecież mówimy o programowaniu sieciowym. A tu nic nigdy tak po prostu sobie nie działa.

Dla tego najpierw omówię przepływ zdarzeń. A dokładniej mówiąc, przepływ zdarzeń DOM. Gdy otworzysz stronę mającą dołączony plik manifestu, przeglądarka uruchamia serię zdarzeń na obiekcie window.applicationCache. Wiem że to jest skomplikowane, ale uwierz mi, że to jest i tak najprostsza wersja, jaką udało mi się wymyślić bez pomijania ważnych informacji.

  1. Gdy przeglądarka odkryje atrybut manifest w elemencie <html>, uruchamia zdarzenie checking. (Wszystkie opisywane tu zdarzenia dotyczą obiektu window.applicationCache.) Zdarzenie checking jest uruchamiane zawsze, niezależnie od tego czy ta konkretna strona albo jakakolwiek inna wskazująca ten manifest była już odwiedzana.
  2. Jeśli przeglądarka nigdy wcześniej nie pobrała tego pliku manifestu:
    • Uruchomi zdarzenie downloading, a później rozpocznie pobieranie zasobów wymienionych na liście manifestu.
    • Podczas pobierania zasobów przeglądarka od czasu do czasu uruchomi zdarzenie progress zawierające informacje o liczbie pobranych plików oraz ile zostało jeszcze do pobrania.
    • Po pobraniu wszystkich zasobów z listy manifestu przeglądarka uruchamia ostatnie zdarzenie o nazwie cached. Jest to sygnał, że cała aplikacja została pobrana do bufora i można jej używać offline. To wszystko.
  3. Jeśli jednak ta lub inna strona wskazująca ten sam manifest była już wcześniej odwiedzona, to przeglądarka zna już ten plik manifestu. To znaczy, że niektóre zasoby mogą już znajdować się w buforze. W istocie zbuforowana może być już cała aplikacja. Powstaje więc pytanie co zmieniło się w manifecie od ostatniego pobrania go przez przeglądarkę?
    • Jeśli nic, następuje uruchomienie zdarzenia noupdate. To wszystko.
    • Jeśli coś się zmieniło, przeglądarka uruchamia zdarzenie downloading i rozpoczyna pobieranie wszystkich wymienionych na liście manifestu zasobów.
    • Podczas pobierania zasobów przeglądarka od czasu do czasu uruchomi zdarzenie progress zawierające informacje o liczbie pobranych plików oraz ile zostało jeszcze do pobrania.
    • Po ponownym pobraniu wszystkich zasobów z listy manifestu przeglądarka uruchamia ostatnie zdarzenie o nazwie updateready. Jest to sygnał, że nowa wersja aplikacji została pobrana do bufora i można jej używać offline. Nowa wersja nie jest jeszcze używana. Aby zastąpić starą wersję nową bez zmuszania użytkownika do odświeżenia strony, można ręcznie wywołać funkcję window.applicationCache.swapCache().

Jeśli w którymkolwiek momencie procesu coś się nie uda, przeglądarka zgłosi zdarzenie error i wstrzyma wszystko. Oto krótka lista potencjalnych problemów:

  • Manifest zwrócił błąd HTTP 404 (nie znaleziono strony) lub 410 (usunięty na zawsze).
  • Manifest został znaleziony i nie zmienił się, ale wskazująca go strona HTML nie została poprawnie pobrana.
  • Manifest zmienił się w trakcie trwania aktualizacji.
  • Manifest został znaleziony i nie zmienił się, ale przeglądarce nie udało się pobrać jednego z wymienionych w nim zasobów.

Dodaj komentarz









Newsletter

Subskrybując nasz newsletter masz pewność, że nie ominie Cię żadna nowość w serwisie!