Descrição do problema
Estou tendo um problema com o cache do web service worker do Flutter. Ao atualizar meu aplicativo web Flutter, a versão do service worker no flutter_bootstrap_js
é atualizada, mas o conteúdo real não reflete as alterações imediatamente.
O que estou fazendo
Estou usando a configuração web do Flutter, onde
{{flutter_bootstrap_js}}
é substituído pelo código bootstrap real emindex.html
:<script> {{flutter_bootstrap_js}} </script>
Isso gera corretamente a versão atualizada do service worker no código:
```javascript
_flutter.loader.load({
serviceWorkerSettings: {
serviceWorkerVersion: "382593536"
}
});
```
O Problema
- Apesar da versão do service worker ser atualizada no código gerado, as alterações reais de conteúdo/IU não são refletidas imediatamente
- Mesmo depois de limpar todos os caches do navegador, a versão antiga persiste
- Estranhamente, as mudanças aparecem depois de algum tempo (geralmente no dia seguinte)
O que eu tentei
- Limpando todos os caches do navegador
- Atualização forçada (Ctrl+F5)
- Esperando por algum tempo
Comportamento esperado
Quando a versão do service worker for atualizada em flutter_bootstrap_js
, as alterações deverão ser refletidas imediatamente após uma atualização.
Comportamento real
A versão antiga persiste apesar da nova versão do service worker estar presente no código, e as alterações só aparecem após um atraso significativo (horas ou no dia seguinte).
Ambiente
- Rede Flutter
- Navegador: Chrome (PC, iPhone, Galaxy), Safari (IPhone)
- Versão Flutter: 3.27.1
Pergunta
- Por que o service worker não atualiza imediatamente, apesar do novo número de versão?
- Existe uma maneira de forçar a atualização imediata do cache do service worker?
- Qual é a maneira correta de lidar com atualizações de service workers no Flutter Web para garantir atualizações imediatas de conteúdo?
Agradeceria quaisquer informações sobre esse comportamento de cache e como lidar adequadamente com atualizações de service workers em aplicativos da web Flutter.
Etiquetas:flutter
flutter-web
service-worker
caching
web
Quando a versão do service worker for atualizada em flutter_bootstrap_js
, as alterações deverão ser refletidas imediatamente após uma atualização.
Responder
O problema estava relacionado ao cache do Cloudflare, não ao próprio service worker do Flutter. Aqui está o que estava acontecendo e como consertar:
Causa raiz
Embora a versão do service worker estivesse sendo atualizada corretamente no
flutter_bootstrap_js
, o Cloudflare estava disponibilizando versões em cache dos ativos, impedindo que a nova versão fosse carregada imediatamente.Solução
Para resolver esse problema, você precisa:
Limpe o cache do Cloudflare:
(Opcional) Durante o desenvolvimento, você pode:
Notas adicionais
Espero que isso ajude outras pessoas que possam enfrentar problemas semelhantes com implantações da web do Flutter por trás do Cloudflare!
Etiquetas:
cloudflare
,flutter-web
,caching
,cdn