Préparer la suppression du cache d'appli

Chrome 85 supprime par défaut la compatibilité avec AppCache. Nous conseillons à la plupart des développeurs de migrer hors du cache d'application dès maintenant, sans attendre plus longtemps.

Pour faire suite aux annonces précédentes, AppCache ne sera plus pris en charge par Chrome et les autres navigateurs basés sur Chromium. Nous encourageons les développeurs à quitter AppCache dès maintenant, au lieu d'attendre plus longtemps.

Les service workers, largement pris en charge dans les navigateurs actuels, offrent une alternative à l'expérience hors connexion offerte par AppCache. Consultez la section Stratégies de migration.

Chronologie

En raison des modifications récentes apportées au calendrier des versions de Chrome, certaines de ces étapes peuvent varier. Nous nous efforcerons de tenir ce calendrier à jour, mais à ce stade, veuillez quitter AppCache dès que possible, au lieu d'attendre des étapes spécifiques.

Une fonctionnalité "obsolète" existe toujours, mais des messages d'avertissement sont envoyés pour en décourager l'utilisation. Une fonctionnalité "supprimée" n'existe plus dans le navigateur.

Abandon dans les contextes non sécurisés Chrome 50 (avril 2016)
Suppression des contextes non sécurisés Chrome 70 (octobre 2018)
Abandon dans les contextes sécurisés Chrome 79 (décembre 2019)
Restriction de champ d'application du cache AppCache Chrome 80 (février 2020)
Début de la phase d'évaluation "Reverse" Chrome 84 (juillet 2020)
Suppression des contextes sécurisés, à l'exception de ceux pour lesquels la phase d'évaluation est activée Chrome 85 (août 2020)
Suppression complète des contextes sécurisés pour tous les utilisateurs, avec fin de la phase d'évaluation 5 octobre 2021 (à peu près Chrome 95)

Phase d'évaluation

La chronologie énumère deux prochaines étapes de suppression. À partir de Chrome 85, AppCache ne sera plus disponible par défaut dans Chrome. Les développeurs qui ont besoin de plus de temps pour quitter AppCache peuvent s'inscrire à une phase d'évaluation "inverse" afin d'étendre la disponibilité d'AppCache pour leurs applications Web. La phase d'évaluation commencera dans Chrome 84 (avant la suppression par défaut dans Chrome 85) et sera active jusqu'au 5 octobre 2021 (à peu près Chrome 95). À ce stade, AppCache sera entièrement supprimé pour tous les utilisateurs, y compris ceux qui se sont inscrits à la phase d'évaluation.

Pour participer à la phase d'évaluation "inverse" :

  1. Demandez un jeton pour votre origine.
  2. Ajoutez le jeton à vos pages HTML. Pour ce faire, vous disposez de deux méthodes :
    • Ajoutez une balise <meta> origin-trial au début de chaque page. Par exemple : <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">.
    • Vous pouvez également configurer votre serveur pour qu'il renvoie des réponses contenant l'en-tête HTTP Origin-Trial. L'en-tête de réponse obtenu doit se présenter comme suit: Origin-Trial: TOKEN_GOES_HERE
  3. Ajoutez le même jeton à vos fichiers manifestes AppCache. Pour ce faire, utilisez un nouveau champ dans le fichier manifeste, au format suivant:
ORIGIN-TRIAL:
TOKEN_GOES_HERE

(Vous devez insérer une nouvelle ligne entre ORIGIN-TRIAL et votre jeton.)

Vous trouverez ci-dessous un exemple de projet intégré qui illustre l'ajout des bons jetons d'évaluation aux fichiers index.html et manifest.appcache.

Pourquoi les jetons sont-ils nécessaires à plusieurs endroits ?

Le même jeton d'évaluation de la phase d'évaluation doit être associé à:

  • Toutes vos pages HTML qui utilisent AppCache.
  • Tous les fichiers manifestes AppCache via le champ ORIGIN-TRIAL du fichier manifeste.

Si vous avez participé à des phases d'évaluation par le passé, vous avez peut-être ajouté le jeton uniquement à vos pages HTML. La phase d'évaluation "inverse" d'AppCache est particulière, car vous devez également associer un jeton à chacun de vos fichiers manifestes AppCache.

L'ajout du jeton de la phase d'évaluation à vos pages HTML active l'interface window.applicationCache à partir de vos applications Web. Les pages qui ne sont pas associées à un jeton ne peuvent pas utiliser les méthodes et événements window.applicationCache. Les pages sans jeton ne pourront pas non plus charger de ressources à partir du cache AppCache. À partir de Chrome 85, elles se comporteront comme si AppCache n'existait pas.

L'ajout du jeton de la phase d'évaluation à vos fichiers manifestes AppCache indique que chaque fichier manifeste est toujours valide. À partir de Chrome 85, tous les fichiers manifestes sans champ ORIGIN-TRIAL seront traités comme non valides, et les règles qu'ils contiennent seront ignorées.

Calendrier de déploiement et logistique de la phase d'évaluation

Bien que la phase d'évaluation "inverse" commence officiellement avec Chrome 84, vous pouvez vous inscrire dès aujourd'hui à la phase d'évaluation et ajouter les jetons à vos fichiers manifestes HTML et AppCache. À mesure que l'audience de votre application Web passe à Chrome 84, tous les jetons que vous avez déjà ajoutés prennent effet.

Une fois que vous avez ajouté un jeton au fichier manifeste AppCache, accédez à about://appcache-internals pour vérifier que votre instance locale de Chrome (version 84 ou ultérieure) a correctement associé le jeton de la phase d'évaluation aux entrées mises en cache de votre fichier manifeste. Si votre phase d'évaluation est reconnue, vous devriez voir un champ avec Token Expires: Tue Apr 06 2021... sur cette page, associé à votre fichier manifeste:

about://appcache-internals affichant un jeton reconnu.

Tests avant suppression

Nous vous encourageons vivement à ne plus utiliser le cache AppCache dès que possible. Si vous souhaitez tester la suppression d'AppCache sur vos applications Web, utilisez l'indicateur about://flags/#app-cache pour simuler sa suppression. Cet indicateur est disponible à partir de Chrome 84.

Stratégies de migration

Les service workers, qui sont largement compatibles avec les navigateurs actuels, offrent une alternative à l'expérience hors connexion fournie par AppCache.

Nous avons fourni un polyfill qui utilise un service worker pour répliquer certaines des fonctionnalités d'AppCache, mais il ne réplique pas l'intégralité de l'interface AppCache. En particulier, elle ne remplace pas l'interface window.applicationCache ni les événements AppCache associés.

Pour les cas plus complexes, les bibliothèques telles que Workbox permettent de créer facilement un service worker moderne pour votre application Web.

Service Workers et AppCache s'excluent mutuellement

Lorsque vous élaborez votre stratégie de migration, n'oubliez pas que Chrome désactivera la fonctionnalité AppCache sur toutes les pages chargées sous le contrôle d'un service worker. En d'autres termes, dès que vous déployez un service worker contrôlant une page donnée, vous ne pouvez plus utiliser AppCache sur cette page.

C'est pourquoi nous vous recommandons de ne pas tenter d'effectuer une migration vers les service workers petit à petit. Déployez un service worker contenant uniquement une partie de votre logique de mise en cache, ce qui serait une erreur. Vous ne pouvez pas utiliser AppCache pour "combler les lacunes".

De même, si vous déployez un service worker avant de supprimer le service AppCache et que vous vous rendez compte ensuite que vous devez effectuer un rollback vers votre précédente implémentation AppCache, vous devez vous assurer d'annuler l'enregistrement de ce service worker. Tant qu'il existe un service worker enregistré dans le champ d'application d'une page donnée, AppCache n'est pas utilisé.

L'histoire multiplate-forme

Si vous souhaitez en savoir plus sur la suppression d'AppCache, nous vous invitons à contacter un fournisseur de navigateur en particulier.

Firefox sur toutes les plates-formes

Firefox est obsolète à la version 44 (septembre 2015) et n'est plus compatible avec ses versions bêta et Nightly depuis septembre 2019.

Safari sur iOS et macOS

Safari est obsolète d'AppCache début 2018.

Chrome sur iOS

Chrome pour iOS est un cas particulier, car il utilise un moteur de navigateur différent de celui utilisé sur les autres plates-formes: WKWebView. Pour le moment, les service workers ne sont pas compatibles avec les applications iOS utilisant WKWebView. De plus, l'annonce de la suppression d'AppCache de Chrome ne couvre pas la disponibilité d'AppCache dans Chrome pour iOS. Gardez cela à l'esprit si vous savez que votre application Web est consultée par une audience importante de Chrome pour iOS.

Android WebViews

Certains développeurs d'applications Android utilisent Chrome WebView pour afficher du contenu Web. Ils peuvent également utiliser AppCache. Toutefois, il n'est pas possible d'activer une phase d'évaluation pour une WebView. De ce fait, Chrome WebView sera compatible avec AppCache sans phase d'évaluation jusqu'à la suppression définitive, attendue dans Chrome 90.

En savoir plus

Voici quelques ressources destinées aux développeurs qui migrent d'AppCache vers les service workers.

Articles

Outils

Obtenir de l'aide

Si vous rencontrez un problème à l'aide d'un outil spécifique, ouvrez-le dans son dépôt GitHub.

Vous pouvez poser une question générale concernant la migration depuis AppCache vers Stack Overflow, en utilisant le tag html5-appcache.

Si vous rencontrez un bug lié à la suppression d'AppCache dans Chrome, veuillez le signaler à l'aide de l'outil de suivi des problèmes de Chromium.

Image principale basée sur les archives de la Smithsonian Institution, Acc. 11-007, Box 020, Image No MNH-4477.