Prepárate para la eliminación de AppCache

En Chrome 85, se quitará la compatibilidad con AppCache de forma predeterminada. La mayoría de los desarrolladores deberían migrar de AppCache ahora y no esperar más.

Como seguimiento de los anuncios anteriores, se quitará la compatibilidad con AppCache de Chrome y otros navegadores basados en Chromium. Recomendamos a los desarrolladores que migren de AppCache ahora, en lugar de esperar más.

Los service workers, que son ampliamente compatibles con los navegadores actuales, ofrecen una alternativa a proporcionar la experiencia sin conexión que ofrecía AppCache. Consulta Estrategias de migración.

Cronograma

Los cambios recientes en el programa de lanzamientos de Chrome implican que los tiempos de algunos de estos pasos pueden variar. Intentaremos mantener este cronograma actualizado, pero, en este momento, migra de AppCache lo antes posible, en lugar de esperar hitos específicos.

Todavía existe una función “obsoleto”, pero registra mensajes de advertencia que desaconsejan su uso. Una función "removida" ya no existe en el navegador.

Baja en contextos no seguros Chrome 50 (abril de 2016)
Eliminación de contextos no seguros Chrome 70 (octubre de 2018)
Baja en contextos seguros Chrome 79 (diciembre de 2019)
Restricción del alcance de AppCache Chrome 80 (febrero de 2020)
Comienza la prueba de origen "inversa" Chrome 84 (julio de 2020)
Eliminación de contextos seguros, excepto para aquellos que habilitaron la prueba de origen Chrome 85 (agosto de 2020)
Eliminación completa de los contextos seguros para todos, con la finalización de la prueba de origen 5 de octubre de 2021 (aproximadamente Chrome 95)

Prueba de origen

En el cronograma, se enumeran dos próximos eventos importantes para la eliminación. A partir de Chrome 85, AppCache ya no estará disponible en Chrome de forma predeterminada. Los desarrolladores que necesiten tiempo adicional para migrar de AppCache pueden registrarse para obtener una prueba de origen "reversa" y extender la disponibilidad de AppCache para sus apps web. La prueba de origen comenzará en Chrome 84 (antes de la eliminación predeterminada en Chrome 85) y estará activa hasta el 5 de octubre de 2021 (aproximadamente Chrome 95). En ese momento, AppCache se quitará por completo para todos los usuarios, incluso para aquellos que se registraron en la prueba de origen.

Para participar en la prueba de origen "reversa", haz lo siguiente:

  1. Solicita un token para tu origen.
  2. Agrega el token a tus páginas HTML. Existen dos maneras de hacerlo:
    • Agrega una etiqueta <meta> origin-trial al encabezado de cada página. Por ejemplo: <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">
    • Como alternativa, configura tu servidor para que muestre respuestas que contengan el encabezado HTTP Origin-Trial. El encabezado de respuesta resultante debería verse de la siguiente manera: Origin-Trial: TOKEN_GOES_HERE
  3. Agrega el mismo token a tus manifiestos de AppCache. Para ello, usa un campo nuevo en tu manifiesto, con el siguiente formato:
ORIGIN-TRIAL:
TOKEN_GOES_HERE

(Debe haber una línea nueva entre ORIGIN-TRIAL y tu token).

Puedes ver un proyecto de ejemplo incorporado a continuación que demuestra cómo agregar los tokens de prueba de origen correctos a los archivos index.html y manifest.appcache.

¿Por qué se necesitan tokens en varios lugares?

El token de prueba del mismo origen debe estar asociado con lo siguiente:

  • Todas tus páginas HTML que usan AppCache.
  • Todos tus manifiestos de AppCache a través del campo de manifiesto ORIGIN-TRIAL

Si participaste en pruebas de origen anteriormente, es posible que hayas agregado el token solo a tus páginas HTML. La prueba de origen "reversa" de AppCache es especial porque también debes asociar un token con cada uno de tus manifiestos de AppCache.

Si agregas el token de prueba de origen a tus páginas HTML, se habilita la interfaz window.applicationCache desde tus apps web. Las páginas que no estén asociadas con un token no podrán usar los métodos y eventos de window.applicationCache. Las páginas sin un token tampoco podrán cargar recursos desde AppCache. A partir de Chrome 85, se comportarán como si AppCache no existiera.

Si agregas el token de prueba de origen a tus manifiestos de AppCache, se indica que cada manifiesto sigue siendo válido. A partir de Chrome 85, los manifiestos que no tengan un campo ORIGIN-TRIAL se tratarán como de formato incorrecto y se ignorarán las reglas dentro del manifiesto.

Logística y cronograma de la implementación de la prueba de origen

Si bien la prueba de origen "reversa" comienza oficialmente con Chrome 84, puedes registrarte en la prueba de origen hoy mismo y agregar los tokens a tus manifiestos HTML y AppCache. A medida que el público de tu app web actualice gradualmente a Chrome 84, se implementarán los tokens que ya hayas agregado.

Una vez que hayas agregado un token a tu manifiesto de AppCache, visita about://appcache-internals para confirmar que tu instancia local de Chrome (versión 84 o posterior) haya asociado correctamente el token de prueba de origen con las entradas almacenadas en caché de tu manifiesto. Si se reconoce tu prueba de origen, deberías ver un campo con Token Expires: Tue Apr 06 2021... en esa página, asociado con tu manifiesto:

Interfaz about://appcache-internals que muestra un token reconocido

Pruebas previas a la eliminación

Te recomendamos que migres de AppCache lo antes posible. Si quieres probar la eliminación de AppCache en tus apps web, usa la marca about://flags/#app-cache para simular su eliminación. Esta marca está disponible a partir de Chrome 84.

Estrategias de migración

Los service workers, que son compatibles con la mayoría de los navegadores actuales, ofrecen una alternativa a la experiencia sin conexión que proporciona AppCache.

Proporcionamos un polyfill que usa un service worker para replicar algunas de las funciones de AppCache, aunque no replica toda la interfaz de AppCache. En particular, no proporciona un reemplazo para la interfaz window.applicationCache ni los eventos relacionados de AppCache.

En casos más complejos, bibliotecas como Workbox proporcionan una forma sencilla de crear un service worker moderno para tu app web.

Los service workers y AppCache son mutuamente excluyentes

Mientras trabajas en tu estrategia de migración, ten en cuenta que Chrome inhabilitará la funcionalidad de AppCache en cualquier página que se cargue bajo el control de un service worker. En otras palabras, en cuanto implementes un service worker que controle una página determinada, ya no podrás usar AppCache en esa página.

Por este motivo, te recomendamos que no intentes migrar a los trabajadores del servicio por partes. Sería un error implementar un trabajador de servicio que solo contenga parte de tu lógica de almacenamiento en caché. No puedes recurrir a AppCache para "completar los espacios vacíos".

De manera similar, si implementas un trabajador de servicio antes de quitar AppCache y, luego, descubres que debes revertir a tu implementación anterior de AppCache, debes asegurarte de anular el registro de ese trabajador de servicio. Siempre que haya un service worker registrado dentro del alcance de una página determinada, no se usará AppCache.

La historia multiplataforma

Te recomendamos que te comuniques con un proveedor de navegador específico si deseas obtener más información sobre sus planes para quitar AppCache.

Firefox en todas las plataformas

Firefox dejó de estar disponible AppCache en la versión 44 (septiembre de 2015) y quitó la compatibilidad con esto en sus compilaciones Beta y nocturna a partir de septiembre de 2019.

Safari en iOS y macOS

Safari dio de baja AppCache a principios de 2018.

Chrome en iOS,

Chrome para iOS es un caso especial, ya que usa un motor de navegador diferente al de Chrome en otras plataformas: WKWebView. Actualmente, los trabajadores del servicio no son compatibles con las apps para iOS que usan WKWebView, y el anuncio de eliminación de AppCache de Chrome no abarca la disponibilidad de AppCache en Chrome para iOS. Ten esto en cuenta si sabes que tu app web tiene un público significativo de Chrome para iOS.

WebViews de Android

Algunos desarrolladores de aplicaciones para Android usan WebView de Chrome para mostrar contenido web y también pueden usar AppCache. Sin embargo, no es posible habilitar una prueba de origen para una WebView. En función de esto, WebView de Chrome admitirá AppCache sin una prueba de origen hasta que se realice la eliminación final, que se espera que ocurra en Chrome 90.

Más información

Estos son algunos recursos para desarrolladores que migran de AppCache a service workers.

Artículos

Herramientas

Cómo obtener ayuda

Si tienes un problema con una herramienta específica, abre un problema en su repositorio de GitHub.

Puedes hacer una pregunta general sobre la migración desde AppCache en Stack Overflow con la etiqueta html5-appcache.

Si encuentras un error relacionado con la eliminación de AppCache de Chrome, infórmalo a través de la Herramienta de seguimiento de errores de Chromium.

Imagen hero basada en los Archivos de la Smithsonian Institution, Acc. 11-007, caja 020, imagen n° MNH-4477.