Preparação para a remoção do AppCache

O Chrome 85 remove o suporte ao AppCache por padrão. A maioria dos desenvolvedores precisa migrar do AppCache e não esperar mais.

De acordo com os anúncios anteriores, o suporte ao AppCache será removido do Chrome e de outros navegadores baseados no Chromium. Incentivamos os desenvolvedores a migrar do AppCache agora em vez de esperar mais tempo.

Os service workers, que são amplamente compatíveis com os navegadores atuais, oferecem uma alternativa à experiência off-line que o AppCache ofereceu. Consulte Estratégias de migração.

Cronograma

Mudanças recentes na programação de lançamentos do Chrome significam que o tempo de algumas dessas etapas pode variar. Vamos tentar manter esse cronograma atualizado, mas, neste momento, migre do AppCache o mais rápido possível, em vez de esperar por marcos específicos.

Um recurso "descontinuado" ainda existe, mas registra mensagens de aviso desencorajando o uso. Um recurso "removido" não existe mais no navegador.

Descontinuação em contextos não seguros Chrome 50 (abril de 2016)
Remoção de contextos não seguros Chrome 70 (outubro de 2018)
Descontinuação em contextos seguros Chrome 79 (dezembro de 2019)
Restrição de escopo do AppCache Chrome 80 (fevereiro de 2020)
O teste de origem "reversa" começa Chrome 84 (julho de 2020)
Remoção de contextos seguros, exceto para aqueles que aceitaram o teste de origem Chrome 85 (agosto de 2020)
Remoção completa de contextos seguros para todos, com conclusão do teste de origem 5 de outubro de 2021 (aproximadamente no Chrome 95)

Teste de origem

O cronograma lista dois marcos de remoção futuros. A partir do Chrome 85, o AppCache não estará mais disponível no Chrome por padrão. Os desenvolvedores que precisarem de mais tempo para migrar do AppCache podem se inscrever para um teste de origem "reverso" para estender a disponibilidade do AppCache para os apps da Web. O teste de origem vai começar no Chrome 84 (antes da remoção padrão no Chrome 85) e vai ficar ativo até 5 de outubro de 2021 (aproximadamente o Chrome 95). Nesse momento, o AppCache será totalmente removido para todos, mesmo para quem se inscreveu no teste de origem.

Para participar do teste de origem "invertida":

  1. Solicite um token para sua origem.
  2. Adicione o token às suas páginas HTML. Há duas maneiras de fazer isso:
    • Adicione uma tag <meta> origin-trial ao cabeçalho de cada página. Por exemplo: <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">
    • Como alternativa, configure o servidor para retornar respostas com o cabeçalho HTTP Origin-Trial. O cabeçalho de resposta resultante vai ser parecido com este: Origin-Trial: TOKEN_GOES_HERE
  3. Adicione o mesmo token aos manifestos do AppCache. Faça isso usando um novo campo no manifesto, com o formato:
ORIGIN-TRIAL:
TOKEN_GOES_HERE

É necessário que haja uma nova linha entre ORIGIN-TRIAL e seu token.

Confira abaixo um exemplo de projeto incorporado que demonstra como adicionar os tokens de teste de origem corretos aos arquivos index.html e manifest.appcache.

Por que os tokens são necessários em vários lugares?

O token de teste de mesma origem precisa ser associado a:

  • Todas as páginas HTML que usam o AppCache.
  • Todos os manifestos do AppCache pelo campo de manifesto ORIGIN-TRIAL.

Se você já participou de testes de origem, talvez tenha adicionado o token apenas às suas páginas HTML. O teste de origem "reversa" do AppCache é especial porque você também precisa associar um token a cada um dos manifestos do AppCache.

Adicionar o token de teste de origem às páginas HTML ativa a interface window.applicationCache nos apps da Web. As páginas que não estão associadas a um token não podem usar métodos e eventos window.applicationCache. As páginas sem um token também não poderão carregar recursos do AppCache. A partir do Chrome 85, eles vão se comportar como se o AppCache não existisse.

Adicionar o token de teste de origem aos manifestos do AppCache indica que cada manifesto ainda é válido. A partir do Chrome 85, os manifestos que não tiverem um campo ORIGIN-TRIAL serão tratados como inválidos, e as regras no manifesto serão ignoradas.

Logística e tempo de implantação do teste de origem

Embora o teste de origem "reverso" comece oficialmente com o Chrome 84, você pode se inscrever nele hoje mesmo e adicionar os tokens aos seus manifestos HTML e AppCache. À medida que o público do seu app da Web for atualizado gradualmente para o Chrome 84, os tokens que você já adicionou vão entrar em vigor.

Depois de adicionar um token ao manifesto do AppCache, acesse about://appcache-internals para confirmar se a instância local do Chrome (versão 84 ou mais recente) associou corretamente o token de teste de origem às entradas em cache do manifesto. Se o teste de origem for reconhecido, você verá um campo com Token Expires: Tue Apr 06 2021... nessa página, associado ao manifesto:

Interface about://appcache-internals mostrando um token reconhecido.

Testes antes da remoção

Recomendamos que você migre do AppCache assim que possível. Se você quiser testar a remoção do AppCache nos seus apps da Web, use a flag about://flags/#app-cache para simular a remoção. Essa flag está disponível a partir do Chrome 84.

Estratégias de migração

Os service workers, que têm ampla compatibilidade com os navegadores atuais, oferecem uma alternativa à experiência off-line fornecida pelo AppCache.

Fornecemos um polyfill que usa um service worker para replicar algumas das funcionalidades do AppCache, mas não toda a interface do AppCache. Em particular, ele não oferece uma substituição para a interface window.applicationCache ou os eventos relacionados do AppCache.

Para casos mais complexos, bibliotecas como a Workbox oferecem uma maneira fácil de criar um service worker moderno para seu app da Web.

Os service workers e o AppCache são mutuamente exclusivos

Ao trabalhar na sua estratégia de migração, lembre-se de que o Chrome desativa a funcionalidade do AppCache em qualquer página carregada sob o controle de um service worker. Em outras palavras, assim que você implantar um service worker que controla uma determinada página, não será mais possível usar o AppCache nela.

Por isso, recomendamos que você não tente migrar para service workers aos poucos. Seria um erro implantar um worker de serviço que contém apenas parte da lógica de armazenamento em cache. Não é possível usar o AppCache para "preencher as lacunas".

Da mesma forma, se você implantar um service worker antes da remoção do AppCache e descobrir que precisa reverter para a implementação anterior do AppCache, é necessário cancelar o registro desse service worker. Enquanto houver um service worker registrado no escopo de uma determinada página, o AppCache não será usado.

A história multiplataforma

Recomendamos que você entre em contato com um fornecedor de navegador específico se quiser mais informações sobre os planos de remoção do AppCache.

Firefox em todas as plataformas

O Firefox desativou o AppCache na versão 44 (setembro de 2015) e removeu o suporte a ele nos builds Beta e noturnos a partir de setembro de 2019.

Safari no iOS e macOS

O AppCache foi descontinuado no Safari no início de 2018.

Chrome no iOS

O Chrome para iOS é um caso especial, porque usa um mecanismo de navegador diferente do Chrome em outras plataformas: o WKWebView. No momento, os service workers não são compatíveis com apps iOS que usam o WKWebView, e o anúncio de remoção do AppCache do Chrome não abrange a disponibilidade do AppCache no Chrome para iOS. Lembre-se disso se você souber que seu app da Web tem um público-alvo significativo do Chrome para iOS.

WebViews do Android

Alguns desenvolvedores de apps Android usam o WebView do Chrome para exibir conteúdo da Web e podem usar o AppCache. No entanto, não é possível ativar um teste de origem para uma WebView. Por isso, a WebView do Chrome vai oferecer suporte ao AppCache sem um teste de origem até a remoção final, prevista para o Chrome 90.

Saiba mais

Confira alguns recursos para desenvolvedores que estão migrando do AppCache para service workers.

Artigos

Ferramentas

Receber ajuda

Se você encontrar um problema ao usar uma ferramenta específica, abra um problema no repositório do GitHub dela.

Você pode fazer uma pergunta geral sobre a migração do AppCache no Stack Overflow usando a tag html5-appcache.

Se você encontrar um bug relacionado à remoção do AppCache do Chrome, informe o problema usando o Issue Tracker do Chromium.

Imagem principal baseada nos Arquivos do Smithsonian Institution, Acc. 11-007, Box 020, Image No. MNH-4477.