Prepárate para la eliminación de AppCache

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

A raíz de anuncios anteriores, se quitará la compatibilidad con AppCache de Chrome y otros navegadores basados en Chromium. Recomendamos a los desarrolladores que migren desde 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.

Línea de tiempo

Cambios recientes en el programa de lanzamientos de Chrome significa que los plazos para 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 a eventos importantes específicos.

Todavía existe una función “obsoleta”, pero se registran mensajes de advertencia que desalientan su uso. Una función "quitada" 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 de alcance de AppCache Chrome 80 (febrero de 2020)
Comienza la prueba de origen "reverso" Chrome 84 (julio de 2020)
Eliminación de contextos seguros, excepto en el caso de quienes aceptaron participar en la prueba de origen Chrome 85 (agosto de 2020)
Se completa la eliminación de contextos seguros para todos los usuarios, tras completar 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 más tiempo para migrar desde AppCache pueden registrarse en una prueba de origen “reversa” para extender la disponibilidad de AppCache en sus aplicaciones web. La prueba de origen comenzará en Chrome 84 (antes de la eliminación predeterminada en Chrome 85) y permanecerá activa hasta el 5 de octubre de 2021 (aproximadamente, Chrome 95). En ese momento, se quitará por completo AppCache para todos, incluso para quienes se hayan registrado 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 origin-trial <meta> al encabezado de cada página. Por ejemplo: <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">
    • Como alternativa, configura el servidor para que muestre respuestas que contengan el encabezado HTTP Origin-Trial. El encabezado de respuesta resultante debería ser similar a este: Origin-Trial: TOKEN_GOES_HERE
  3. Agrega el mismo token a tus manifiestos de AppCache. Haz esto a través de un campo nuevo en tu manifiesto, con el siguiente formato:
ORIGIN-TRIAL:
TOKEN_GOES_HERE

(es necesario que haya una nueva línea entre ORIGIN-TRIAL y tu token).

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

¿Por qué se necesitan los tokens en varios lugares?

Se debe asociar el mismo token de prueba de origen 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.

Al agregar el token de prueba de origen a tus páginas HTML, se habilita la interfaz window.applicationCache desde tus aplicaciones web. Las páginas que no estén asociadas con un token no podrán usar métodos ni eventos de window.applicationCache. Las páginas sin un token tampoco podrán cargar recursos desde la 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 indicará que todos los manifiestos son válidos. A partir de Chrome 85, cualquier manifiesto que no tenga un campo ORIGIN-TRIAL se considerará un formato incorrecto y se ignorarán las reglas dentro del manifiesto.

Cronograma y logística de la implementación de las pruebas de origen

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

Una vez que hayas agregado un token al 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é del manifiesto. Si se reconoce la prueba de origen, deberías ver un campo con Token Expires: Tue Apr 06 2021... en esa página, asociado con el manifiesto:

La interfaz about://appcache-internals muestra un token reconocido.

Pruebas previas a la eliminación

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

Estrategias de migración

Los service workers, que son muy compatibles con 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, las bibliotecas como Workbox proporcionan una forma fácil 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 todas las páginas que se carguen bajo el control de un service worker. En otras palabras, tan pronto como 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 realizar la migración a service worker paso a paso. Sería un error implementar un service worker que solo contenga parte de tu lógica de almacenamiento en caché. No puedes recurrir a AppCache para "completar los vacíos".

Del mismo modo, si implementas un service worker antes de quitar una AppCache y, luego, descubres que debes revertirla a la implementación anterior de AppCache, deberás asegurarte de cancelar el registro de ese service worker. Siempre que haya un service worker registrado en el alcance de una página determinada, no se usará AppCache.

La historia de las plataformas multiplataforma

Te recomendamos que te comuniques con un proveedor de navegadores específico si deseas obtener más información acerca de sus planes de eliminación de la caché de la app.

Firefox en todas las plataformas

Firefox dio de baja AppCache en la versión 44 (septiembre de 2015) y quitó su compatibilidad en sus compilaciones Beta y nocturnas a partir de septiembre de 2019.

Safari en iOS y macOS

Safari obsoleto de 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 service workers no son compatibles con 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 aplicación 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 es posible que usen AppCache. Sin embargo, no es posible habilitar una prueba de origen para una WebView. En consecuencia, WebView de Chrome admitirá AppCache sin una prueba de origen hasta que se realice la eliminación final, que se espera en Chrome 90.

Más información

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

Artículos

Herramientas

Cómo obtener ayuda

Si tienes un problema cuando usas una herramienta específica, infórmalo 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 la caché de la app de Chrome, infórmalo mediante la Herramienta de seguimiento de errores de Chromium.

Hero image basada en Smithsonian Institution Archives, Acc. 11-007, Box 020, núm. de imagen MNH-4477.