“Nova versão disponível” com service worker e sw-precache
Estou tentando usarsw-precache
, mas devo estar fazendo algo errado!
Estou principalmente usando o código de demonstração disponível norepositório github e não consigo receber atualizações do aplicativo. Depois de armazenado em cache pela primeira vez, ele nunca verifica novas versões.
Eu esperava que, ao publicar um novo trabalhador de serviço, o navegador solicitasse o novo trabalhador de serviço e atualizasse o cache adequadamente em segundo plano. Então, usando ocódigo de registro no exemplo, Eu poderia solicitar ao usuário que atualize e obtenha a versão mais recente do cache recém-atualizado.
Realmente apreciaria se alguém pudesse me indicar a direção certa.
ExemploPara demonstrar o problema, criei um exemplo isolado aqui:https://github.com/stevenocchipinti/sw-precache-demo
O exemplo usa um esqueleto básico decreate-react-app
que tem uma tarefa de compilação integrada que cuida da impressão digital dos nomes de arquivos etc.
Eu suspeito que o problema está comigo armazenando tudo em cache usando o seguintesw-precache
config:
{
"staticFileGlobs": [ "build/**/*.*" ],
"stripPrefix": "build/"
}
Existem etapas mais precisas no leia-me do repositório, mas as etapas básicas que estou tomando para reproduzir o problema são as seguintes (com minhas expectativas provavelmente incorretas).
Etapas e premissasNavegue até o aplicativo pela primeira vez
Eu deveria verContent is now available offline!
no console
Recarregue a página
A mensagem no console não deve aparecer novamente porque o responsável pelo serviço está instalado, mas a página ainda deve funcionar.
Fique offline e recarregue a página
A página ainda deve funcionar
Faça uma alteração visível no código fonte
Reconstruir (execute a tarefa de compilação esw-precache
)
É aqui que meu entendimento deve estar errado
Recarregue a página
O responsável pelo serviço deve atualizar o cache em segundo planoQuando terminar, você deverá verNew or updated content is available.
no consoleAs alterações visíveis reais não devem ser visíveis até a próxima recargaRecarregue a página novamente
O navegador usará o novo cache desta vezAs alterações devem estar visíveis agora!Não deve haver nenhuma mensagem no consoleO problemaDepois que o aplicativo tiver sido armazenado em cache inicialmente, ele nunca será atualizado, a menos que você cancele o registro do técnico de serviço ou force uma recarga.
Não tenho certeza de como fazer isso funcionar - qualquer ajuda seria muito apreciada!