Gerador de service-worker.js
Gera um service worker básico com estratégia cache-first ou network-first e lista de assets para precache.
service-worker.js:
—
Cache offline sem depender do Workbox
Você quer que a página abra mesmo sem rede, mas escrever um service worker do zero significa acertar três eventos e o ciclo de vida entre eles. Escolha a estratégia (cache-first ou network-first), dê um nome de versão ao cache e liste os arquivos do precache, um por linha. A saída é um service-worker.js completo, com install, activate limpando caches antigos e o fetch já ignorando requisições que não sejam GET.
O install usa addAll, que é tudo ou nada: se um único caminho da lista devolver 404, a instalação inteira falha e o service worker nunca ativa. É de longe a causa mais comum do famoso não registra. Vale saber também que nenhuma das duas estratégias grava resposta nova no cache durante a navegação, só o que estava na lista. É para isso que serve o campo de versão: publicou arquivo novo, troca v1 por v2 e o activate apaga o cache anterior.
Registre com navigator.serviceWorker.register e sirva o arquivo da raiz do site, porque o escopo é a pasta onde ele está: em /js/ ele só controla /js/. Exige HTTPS, com localhost como exceção. O código gerado chama skipWaiting e clients.claim, então a versão nova assume na hora, enquanto a aba aberta ainda roda o JavaScript antigo; se preferir a troca só no próximo carregamento, apague essas duas linhas. A geração é local.
Perguntas frequentes
Cache-first ou network-first, qual escolher?
Por que o site não atualiza depois do deploy?
O network-first funciona offline?
Ferramentas Relacionadas
Gerador de Favicon SVG para PWA
Gera favicon SVG inline simples a partir de letra(s) ou emoji e cor de fundo. Pronto para colar no <head>.
Gerador de PWA manifest.json
Monte um manifest.json para PWA (name, short_name, theme_color, background_color, display, icons) com pré-visualização.
Cache-Control max-age Explicado
Converta o valor de max-age do cabeçalho Cache-Control (em segundos) para um tempo legível em horas e dias. Útil para entender e depurar cache HTTP e CDNs.