Acessar caches na janela

Com todo esse trabalho que temos feito fora do window, talvez você pense que as instâncias do Cache só podem ser acessadas no escopo do service worker. Na verdade, é possível acessar instâncias de Cache em ambos os escopos do service worker e no código tradicional do app da Web, executado no window. Isso facilita a interação direta do usuário com o cache de um service worker ou a atualização da interface do usuário com base no estado do cache.

Um possível caso de uso é oferecer um recurso "salvar para off-line" para páginas que o usuário talvez queira ler mais tarde, mas saiba que talvez esteja off-line. A incorporação do Glitch abaixo mostra como fazer isso com o Workbox.

Na incorporação acima, é possível ver que o script app.js grava no cache off-line pelo contexto window quando o botão "salvar para off-line" é clicado. No service worker, os recursos estáticos da página são pré-armazenados em cache para acesso off-line. Uma estratégia NetworkOnly é usada com um gerenciador especial que gerencia o acesso off-line para páginas em cache e é transmitida para um NavigationRoute.

Para testar a funcionalidade na incorporação do Glitch, faça o seguinte:

  1. Abra uma nova janela do navegador e acesse https://save-for-offline-test.glitch.me/.
  2. Clique no botão Adicionar à lista de leitura off-line.
  3. Abra as ferramentas para desenvolvedores do seu navegador no Firefox ou no Chrome. Se estiver usando o Chrome, acesse o painel do aplicativo. No Firefox, acesse o painel de armazenamento.
  4. Nas ferramentas para desenvolvedores de qualquer navegador, você verá um item Armazenamento em cache no painel esquerdo. Clique para expandir. Na entrada offline-cache, você verá o URL da página que acabou de adicionar no painel direito.
  5. Clique no link de qualquer outra página na parte inferior da página.
  6. Ative o modo off-line em qualquer um dos navegadores para simular uma conexão off-line.
  7. Clique no link da página que você adicionou ao cache off-line. Ele deve aparecer mesmo que você esteja off-line.
  8. Clique no link de uma página que você não adicionou ao cache off-line. A solicitação falhará.

Esse não é o único caso de uso para trabalhar com instâncias de Cache no window. Por exemplo, é possível pré-buscar e armazenar em cache de maneira preditiva os recursos que você sabe que o usuário vai precisar realizar uma ação específica. Isso reduziria ou evitaria a latência do download desses recursos sob demanda.

Há outros casos de uso potencialmente benéficos e, como é possível interagir com instâncias de Cache na ausência de um service worker, nem todos podem exigir a instalação de um.