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:
- Abra uma nova janela do navegador e acesse https://save-for-offline-test.glitch.me/.
- Clique no botão Adicionar à lista de leitura off-line.
- 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.
- 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.
- Clique no link de qualquer outra página na parte inferior da página.
- Ative o modo off-line em qualquer um dos navegadores para simular uma conexão off-line.
- Clique no link da página que você adicionou ao cache off-line. Ele deve aparecer mesmo que você esteja off-line.
- 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.