Versãoamento de Assets
O primeiro passo para garantir que os assets do seu aplicativo web permaneçam atualizados é implementar versãoamento. Cada arquivo JavaScript e CSS deve ser carregado com uma versão incremental, como ?v=1.0.0. Isso garante que, mesmo com mudanças na URL de deploy, os arquivos em cache nunca se tornem obsoletos. Se a URL muda a cada deploy, o arquivo em cache nunca ficará velho, permitindo que você utilize o cache de forma eficiente.

Cache Primário para Páginas
O segundo passo é garantir que as páginas sejam carregadas da maneira mais eficiente possível. Aqui, a página (navigate) deve ser carregada de forma que primeiro tente a rede, mas se não houver conexão, o cache é usado como uma reserva. O HTML não deve ter versão na URL, então o service worker deve guardar a cópia boa da página e apenas cair no cache quando a conexão está offline. Cada página deve ser salva com sua própria URL, e se não houver cópia no cache, o service worker deve recorrer à página principal do aplicativo.
Dados Vivo nunca no Cache
O terceiro passo é garantir que dados vivos nunca entrem no cache. Endpoints .php e um arquivo .json (como um arquivo de câmbio) devem ser carregados diretamente, sem o uso do método respondWith. Servir o câmbio de três semanas atrás como se fosse de hoje é pior do que não mostrar nada.
Limpeza de Cache
O quarto e último passo é garantir que o cache seja limpo. Use a função caches.keys() para filtrar pelo prefixo do seu aplicativo, e então use clients.claim() para apagar todos os caches antigos. Isso garante que cada deploy de seu aplicativo não deixe um cache inteiro esquecido no disco do usuário.
Detalhes Adicionais
Além dessas regras, há dois detalhes que devem ser considerados. Primeiro, a formatação de números e moeda deve ser feita com o Intl.NumberFormat, considerando o locale do documento, não do navegador. Isso garante que um documento em alemão aberto num navegador em português saia com o formato correto. Segundo, a função window.print() com um CSS @media print bem feito pode resolver sem bibliotecas de PDF e sem enviar nada para o servidor.
Quando Usar Workbox?
Quando deve-se usar Workbox? Em geral, a biblioteca Workbox começa a valer a pena quando o aplicativo web ultrapassa 100 KB de conteúdo. Além disso, a biblioteca Workbox oferece uma série de funcionalidades úteis, como cache manutenção automática, cache de cache de cache de cache. Além disso, Workbox também oferece uma série de funcionalidades úteis, como cache manutenção automática, cache de cache de cache de cache.
Alguém aqui usa Workbox ou prefere escrever o service worker na mão como eu? Queria entender em que ponto a biblioteca começa a valer a pena.