Entfernen von AppCache vorbereiten

In Chrome 85 wird die Unterstützung für AppCache standardmäßig eingestellt. Die meisten Entwickler sollten AppCache jetzt migrieren und nicht länger warten.

wie bereits in früheren Ankündigungen angekündigt, wird der Support für AppCache in Chrome und anderen Chromium-basierten Browsern eingestellt. Wir empfehlen Entwicklern, den AppCache jetzt zu migrieren, anstatt länger zu warten.

Service Worker, die in aktuellen Browsern weithin unterstützt werden, stellen eine Alternative zur Offlinenutzung von AppCache dar. Siehe Migrationsstrategien.

Zeitplan

Kürzlich vorgenommene Änderungen am Chrome-Veröffentlichungszeitplan bedeuten, dass der Zeitpunkt einiger dieser Schritte variieren kann. Wir versuchen, diesen Zeitplan auf dem neuesten Stand zu halten, aber migrieren Sie an dieser Stelle so schnell wie möglich aus AppCache, anstatt auf bestimmte Meilensteine zu warten.

Eine „eingestellte“ Funktion existiert weiterhin, protokolliert aber Warnmeldungen, die von einer Nutzung abgeraten werden. Eine „entfernte“ Funktion ist im Browser nicht mehr vorhanden.

Einstellung in unsicheren Kontexten Chrome 50 (April 2016)
Entfernen aus nicht sicheren Kontexten Chrome 70 (Oktober 2018)
Einstellung im sicheren Kontext Chrome 79 (Dezember 2019)
Beschränkung des AppCache-Bereichs Chrome 80 (Februar 2020)
Ursprungstest „Reverse“ beginnt Chrome 84 (Juli 2020)
Entfernung aus sicheren Kontexten, mit Ausnahme derer, die für den Ursprungstest aktiviert wurden Chrome 85 (August 2020)
Vollständige Entfernung aus dem sicheren Kontext für alle Nutzer nach Abschluss des Ursprungstests 5. Oktober 2021 (ungefähr Chrome 95)

Ursprungstest

Der Zeitplan listet zwei bevorstehende Meilensteine auf, die entfernt werden müssen. Ab Chrome 85 ist AppCache nicht mehr standardmäßig in Chrome verfügbar. Entwickler, die mehr Zeit für die Migration aus AppCache benötigen, können sich für einen „umgekehrten“ Ursprungstest registrieren, um die Verfügbarkeit von AppCache für ihre Web-Apps zu erhöhen. Der Ursprungstest beginnt in Chrome 84 (vor der standardmäßigen Entfernung in Chrome 85) und läuft bis zum 5. Oktober 2021 (ca. Chrome 95). AppCache wird dann für alle Nutzer vollständig entfernt, auch für diejenigen, die sich für den Ursprungstest registriert haben.

So nehmen Sie am „umgekehrten“ Ursprungstest teil:

  1. Fordern Sie ein Token für Ihren Ursprung an.
  2. Fügen Sie das Token auf Ihren HTML-Seiten ein. Dafür gibt es zwei Möglichkeiten:
    • Fügen Sie im Header jeder Seite ein origin-trial <meta>-Tag ein. Beispiel: <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">
    • Alternativ kannst du deinen Server so konfigurieren, dass er Antworten zurückgibt, die den HTTP-Header Origin-Trial enthalten. Der resultierende Antwortheader sollte in etwa so aussehen: Origin-Trial: TOKEN_GOES_HERE
  3. Fügen Sie Ihren AppCache-Manifesten dasselbe Token hinzu. Dazu verwenden Sie ein neues Feld in Ihrem Manifest im folgenden Format:
ORIGIN-TRIAL:
TOKEN_GOES_HERE

(Zwischen ORIGIN-TRIAL und Ihrem Token muss eine neue Zeile stehen.)

Unten sehen Sie ein Beispielprojekt, das zeigt, wie die korrekten Ursprungstesttokens in den Dateien index.html und manifest.appcache hinzugefügt werden.

Warum sind Tokens an mehreren Stellen erforderlich?

Mit demselben Ursprungstesttoken muss Folgendes verknüpft werden:

  • Alle HTML-Seiten, die AppCache verwenden.
  • Alle Ihre AppCache-Manifeste über das Manifestfeld ORIGIN-TRIAL.

Wenn Sie in der Vergangenheit an Ursprungstests teilgenommen haben, haben Sie das Token möglicherweise nur Ihren HTML-Seiten hinzugefügt. Der "Reverse"-Ursprungstest von AppCache ist insofern besonders, als Sie jedem Ihrer AppCache-Manifeste ein Token zuordnen müssen.

Wenn Sie Ihren HTML-Seiten das Token für den Ursprungstest hinzufügen, wird die window.applicationCache-Schnittstelle innerhalb Ihrer Webanwendungen aktiviert. Seiten, die nicht mit einem Token verknüpft sind, können keine window.applicationCache-Methoden und -Ereignisse verwenden. Seiten ohne Token können außerdem keine Ressourcen aus dem AppCache laden. Ab Chrome 85 verhalten sie sich so, als gäbe es den AppCache nicht.

Wenn Sie das Token des Ursprungstests zu Ihren AppCache-Manifesten hinzufügen, ist jedes Manifest noch gültig. Ab Chrome 85 werden alle Manifeste, die das Feld „ORIGIN-TRIAL“ nicht enthalten, als fehlerhaft behandelt und die Regeln im Manifest ignoriert.

Zeitplan und Logistik für die Bereitstellung des Ursprungstests

Der „umgekehrte“ Ursprungstest beginnt offiziell mit Chrome 84. Sie können sich aber noch heute für den Ursprungstest registrieren und die Tokens zu Ihren HTML- und AppCache-Manifesten hinzufügen. Wenn die Zielgruppe Ihrer Web-App nach und nach auf Chrome 84 aktualisiert wird, treten alle bereits hinzugefügten Tokens in Kraft.

Nachdem Sie Ihrem AppCache-Manifest ein Token hinzugefügt haben, rufen Sie about://appcache-internals auf, um zu überprüfen, ob Ihre lokale Instanz von Chrome (Version 84 oder höher) das Token des Ursprungstests richtig mit den im Manifest gespeicherten Einträgen Ihres Manifests verknüpft hat. Wenn Ihr Ursprungstest erkannt wird, sollte auf dieser Seite das Feld Token Expires: Tue Apr 06 2021... angezeigt werden, das mit Ihrem Manifest verknüpft ist:

Über die Schnittstelle about://appcache-internals wird ein erkanntes Token angezeigt.

Tests vor dem Entfernen

Wir empfehlen Ihnen dringend, so schnell wie möglich eine Migration aus AppCache durchzuführen. Wenn Sie die Entfernung von AppCache in Ihren Webanwendungen testen möchten, verwenden Sie das Flag about://flags/#app-cache, um die Entfernung zu simulieren. Dieses Flag ist ab Chrome 84 verfügbar.

Migrationsstrategien

Service Worker, die in aktuellen Browsern umfassend unterstützt werden, stellen eine Alternative zur Offline-Nutzung von AppCache dar.

Wir haben einen polyfill bereitgestellt, der einen Service Worker verwendet, um einige Funktionen von AppCache zu replizieren, wobei nicht die gesamte AppCache-Schnittstelle repliziert wird. Insbesondere ist sie kein Ersatz für die window.applicationCache-Schnittstelle oder die zugehörigen AppCache-Ereignisse.

Für komplexere Fälle bieten Bibliotheken wie Workbox eine einfache Möglichkeit, einen modernen Service Worker für Ihre Webanwendung zu erstellen.

Service Worker und AppCache schließen sich gegenseitig aus

Beachten Sie bei der Entwicklung Ihrer Migrationsstrategie, dass Chrome die AppCache-Funktionen auf allen Seiten deaktiviert, die unter der Kontrolle eines Service Workers geladen werden. Mit anderen Worten: Sobald Sie einen Service Worker bereitstellen, der eine bestimmte Seite steuert, können Sie AppCache auf dieser Seite nicht mehr verwenden.

Daher raten wir davon ab, zu versuchen, einzelne Service Worker zu migrieren. Es wäre ein Fehler, einen Service Worker bereitzustellen, der nur einen Teil Ihrer Caching-Logik enthält. Es ist nicht möglich, auf AppCache zurückzugreifen, um die Lücken zu schließen.

Das Gleiche gilt, wenn Sie vor dem Entfernen von AppCache einen Service Worker bereitstellen und dann feststellen, dass ein Rollback zu Ihrer vorherigen AppCache-Implementierung erforderlich ist. In diesem Fall müssen Sie die Registrierung für diesen Service Worker aufheben. Solange für eine bestimmte Seite ein registrierter Service Worker vorhanden ist, wird AppCache nicht verwendet.

Die plattformübergreifende Geschichte

Wir empfehlen Ihnen, sich an einen bestimmten Browser-Anbieter zu wenden, wenn Sie weitere Informationen über dessen Pläne für die Entfernung von AppCache benötigen.

Firefox auf allen Plattformen

Firefox hat AppCache in Release 44 (September 2015) eingestellt. In den Beta- und Nightly-Builds vom September 2019 wurde die Unterstützung dafür entfernt.

Safari unter iOS und macOS

Safari wurde Anfang 2018 eingestellt.

Google Chrome unter iOS

Bei Chrome für iOS handelt es sich um einen Sonderfall, da hier eine andere Browser-Engine als Chrome auf anderen Plattformen verwendet wird: WKWebView. Service Worker werden derzeit nicht in iOS-Apps unterstützt, die WKWebView verwenden, und die Ankündigung zur Entfernung von AppCache in Chrome deckt die Verfügbarkeit von AppCache in Chrome für iOS nicht ab. Beachten Sie dies, wenn Sie wissen, dass Ihre Web-App eine große Zielgruppe von Chrome für iOS hat.

Android WebViews

Einige Entwickler von Android-Apps verwenden WebView zum Anzeigen von Webinhalten und möglicherweise auch AppCache. Es ist jedoch nicht möglich, einen Ursprungstest für ein WebView zu aktivieren. Aus diesem Grund unterstützt Chrome WebView AppCache ohne Ursprungstest, bis die endgültige Entfernung erfolgt, wie in Chrome 90 erwartet.

Weitere Informationen

Hier sind einige Ressourcen für Entwickler, die von AppCache zu Service Workern migrieren.

Artikel

Tools

Unterstützung erhalten

Wenn bei der Verwendung eines bestimmten Tools ein Problem auftritt, öffnen Sie ein Problem im zugehörigen GitHub-Repository.

Auf Stack Overflow können Sie mit dem Tag html5-appcache eine allgemeine Frage zur Migration aus AppCache stellen.

Wenn Sie einen Fehler bei der Entfernung von AppCache in Chrome feststellen, melden Sie ihn bitte über die Chromium-Problemverfolgung.

Hero-Image basierend auf Smithsonian Institution Archives, Acc. 11-007, Box 020, Bild-Nr. MNH-4477.