サイトの新しいバージョン (Polymer にあり、現在は Vue.js にある) を既存のプロジェクトを介して Firebase にデプロイしました。
vue init webpack my-project
新しいプロジェクトでデフォルトの Vue.js テンプレートと Webpack ( ) を使用しています
新しいバージョンをデプロイしたので、サイトを開くと、キャッシュされたシェルしか表示されません。これは Service Worker のせいだと思います
Firebase I (および以前のすべての訪問者) から実際の現在のファイルを取得するために、毎回 ( Ctrl+F5
firefox で)サイトをハード更新する必要があります。
コンソール
今、ブラウザ コンソール (ネットワーク タブ) に次のように表示されます。
赤字の Service Worker には、次のように書かれています:
(failed) net::ERR_INSECURE_RESPONSE
通常、サイトを開いたとき (ハード リフレッシュなし)一部のファイルのサイズ プロパティは
(from ServiceWorker)
次のとおりです。これらのファイルにはサイズがありますcache-control:max-age=3600
が、サイトの新しいバージョンをデプロイしてから 1 時間以上経過しています。サービスワーカー自体にはヘッダーがないようです。おそらくそれが古いファイルをロードし続ける理由です
このコードを に追加しfirebase.json
、npm run build
Service Worker を削除しようとしましたが、まだ問題があります
Firebase.json
{
"hosting": {
"public": "dist",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
],
"headers": [
{ "source":"/service-worker.js", "headers": [{"key": "Cache-Control", "value": "no-cache"}] }
]
}
}
前のプロジェクトの Service Worker コード
新しくデプロイされたバージョンでは Service Worker を使用しません。しかし、以前のデプロイでは Service Worker を登録しました
私が使用した構成済みの Polymer スターター キット テンプレートでビルドされた、Polymer 1.0 フレームワークのライブラリのデフォルトの sw-precache コンポーネントを使用していました。Service Worker はビルド時に生成されました
同梱 > service-worker.js: https://jsfiddle.net/uydjzw13/
アンバンドル > service-worker.js: https://jsfiddle.net/t42fdgow/
質問:
すべてのサイト訪問者のブラウザーからその古い Service Worker を削除して、常に新しくデプロイされたバージョンを取得する方法はありますか? どうにかして Webpack や Firebase でそれを行うことができますか?
Service Worker で以前にデプロイしたバージョンを Firebase から削除するだけで修正されますか?
または、可能であれば、以前のキャッシュをすべて削除し、以前の Service Worker を登録解除する唯一の機能を持つ Service Worker を使用して、別のバージョンをデプロイできますか?
または、このようなものを使用できますか?: https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/unregister
それを正しく行う方法がわかりません。また、削除できない Service Worker を誤って登録しないようにする方法もわかりません。