Sobes.tech
Middle

Czym jest pamięć podręczna aplikacji w HTML5?

sobes.tech AI

Odpowiedź od AI

Pamięć podręczna aplikacji (Application Cache) w HTML5 to mechanizm, który pozwala na działanie aplikacji internetowej offline, udostępniając zestaw zasobów (strony HTML, CSS, JavaScript, obrazy), które przeglądarka przechowuje lokalnie w pamięci podręcznej.

Aby korzystać z pamięci podręcznej aplikacji, potrzebny jest plik manifestu z rozszerzeniem .appcache, powiązany z stroną HTML przez atrybut manifest w tagu <html>:

<html manifest="manifest.appcache">
...
</html>

Struktura pliku manifestu wygląda następująco:

CACHE MANIFEST
# Wersja manifestu (opcjonalnie, do aktualizacji pamięci podręcznej)
# v1.0

CACHE:
# Zasoby jawnie przechowywane w pamięci podręcznej
/css/style.css
/js/script.js
/images/logo.png

FALLBACK:
# Zapasowe zasoby na wypadek braku połączenia
/offline.html /

NETWORK:
# Zasoby, które zawsze powinny być pobierane z sieci
*

Główne sekcje pliku manifestu:

  • CACHE:: Zasoby wymienione w tej sekcji będą przechowywane w pamięci podręcznej po pierwszym załadowaniu strony z określonym manifestem.
  • FALLBACK:: Definiuje zasoby zapasowe. Jeśli żądanie sieciowe głównego zasobu się nie powiedzie, przeglądarka załaduje wskazany zasób zapasowy. Format: zasób_główny zasób_zapasowy.
  • NETWORK:: Zasoby wymienione w tej sekcji nigdy nie będą przechowywane w pamięci podręcznej i zawsze będą pobierane z sieci. Symbol * oznacza, że wszystkie zasoby nie wymienione w innych sekcjach będą zawsze pobierane z sieci.

Aktualizacja pamięci podręcznej aplikacji następuje, gdy plik manifestu się zmienia. Przeglądarka pobiera zaktualizowany manifest, porównuje go z bieżącym i pobiera nowe lub zmienione zasoby. Nowe pliki są dostępne tylko po odświeżeniu strony.

Wydarzenia związane z pamięcią podręczną aplikacji:

  • checking: Przeglądarka sprawdza, czy dostępna jest nowa wersja manifestu.
  • downloading: Przeglądarka pobiera zasoby wskazane w nowej wersji manifestu.
  • progress: Postęp pobierania zasobów.
  • updateready: Nowa wersja pamięci podręcznej jest gotowa do użycia. Wymaga odświeżenia strony.
  • cached: Zasoby zostały pomyślnie zapisane w pamięci podręcznej przy pierwszym ładowaniu.
  • noupdate: Manifest się nie zmienił.
  • error: Wystąpił błąd podczas ładowania lub aktualizacji pamięci podręcznej.

API pamięci podręcznej aplikacji jest dostępne przez window.applicationCache.

// Sprawdzenie statusu pamięci podręcznej
console.log(window.applicationCache.status);

// Obsługa zdarzenia updateready
window.applicationCache.addEventListener('updateready', function() {
  if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
    // Zastosuj nową wersję pamięci podręcznej i odśwież stronę
    window.applicationCache.swapCache();
    window.location.reload();
  }
}, false);

Chociaż Application Cache zapewniał funkcje offline, jego użycie nie jest zalecane w nowych projektach ze względu na trudności w zarządzaniu, problemy z aktualizacją i brak elastyczności. W nowoczesnych podejściach do dostępu offline i innych funkcji progresywnych aplikacji webowych (PWA) używa się Service Workers.