問題タブ [sw-precache]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
service-worker - sw-precache を使用してコンテンツ以外のすべてをキャッシュする方法
次の構成でオフライン機能を追加するために、jekyll Web サイトで sw-precache を使用しています。
問題は、Web サイトのコンテンツ (たとえば、ブログ投稿のテキスト、またはインデックス ページのテキスト) を変更すると、新しい Serviceworker バージョンがインストールされ、ブラウザーが更新されるまで変更が表示されないことです。もちろん、これは の予想される動作ですcacheFirst
。
私が望むのは、サイトのインデックスへのリクエストを常に最初にネットワークにすることです。これが私がここで試していることです:
しかし、これは機能していません。インデックスは常にネットワークからではなくサービスワーカーからフェッチされます。どうすればこれを達成できますか?
javascript - Google の sw-precache で構築された Service Worker は本当に networkFirst になることができますか?
Hugoを実行している Web サイトhttps://www.igluonline.comを実行しており、最近、Google のsw-precacheに従って Service Worker をインストールしました。
これは構成ファイルです。
考慮事項:
自動生成されたコードでエラーが発生することもありますが、Service Worker は適切に動作し、Web とモバイルの両方でオフライン エクスペリエンスを提供します。
また、新しいコードをプッシュcache-control
するmax-age=0
と、更新が行われます。
問題:
を設定し、runtimeCaching handler
GooglenetworkFirst
のsw-toolbox
API (をsw-precache
使用するときに存在するruntimeCaching
) に従って、できれば http 呼び出しからページを取得し、接続がない場合はキャッシュにフォールバックする必要があります。
しかし、コードを更新して新しいウィンドウを開いてテストすると (更新前に Web サイトを実行しているすべてのタブとウィンドウを閉じていることに注意してください)、キャッシュされたページが表示されます。新しい Service Worker が自然にダウンロードされ、2 回目のリロードでページが更新されますが、訪問者が新しいコンテンツを取得するたびにホームページを 2 回更新することは期待できません。
runtimeCaching
少なくとも自分のホームページをネットワークから直接ロードできるようにするために、コードを次のように変更しようとしましたが、うまくいきませんでした:
望ましい PWA エクスペリエンスがそのようなものなのか (つまり、更新されたコードを表示するには、ユーザーが 2 回リロードするか、少なくとも 2 つのページにアクセスする必要があるのか)、それとも私が何か間違いを犯しているのかはわかりません。検討していただければ幸いです。