問題タブ [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.

0 投票する
3 に答える
1218 参照

service-worker - sw-precache を使用してコンテンツ以外のすべてをキャッシュする方法

次の構成でオフライン機能を追加するために、jekyll Web サイトで sw-precache を使用しています。

問題は、Web サイトのコンテンツ (たとえば、ブログ投稿のテキスト、またはインデックス ページのテキスト) を変更すると、新しい Serviceworker バージョンがインストールされ、ブラウザーが更新されるまで変更が表示されないことです。もちろん、これは の予想される動作ですcacheFirst

私が望むのは、サイトのインデックスへのリクエストを常に最初にネットワークにすることです。これが私がここで試していることです:

しかし、これは機能していません。インデックスは常にネットワークからではなくサービスワーカーからフェッチされます。どうすればこれを達成できますか?

0 投票する
1 に答える
844 参照

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 handlerGooglenetworkFirstsw-toolbox API (をsw-precache使用するときに存在するruntimeCaching) に従って、できれば http 呼び出しからページを取得し、接続がない場合はキャッシュにフォールバックする必要があります。

しかし、コードを更新して新しいウィンドウを開いてテストすると (更新前に Web サイトを実行しているすべてのタブとウィンドウを閉じていることに注意してください)、キャッシュされたページが表示されます。新しい Service Worker が自然にダウンロードされ、2 回目のリロードでページが更新されますが、訪問者が新しいコンテンツを取得するたびにホームページを 2 回更新することは期待できません。

runtimeCaching少なくとも自分のホームページをネットワークから直接ロードできるようにするために、コードを次のように変更しようとしましたが、うまくいきませんでした:

望ましい PWA エクスペリエンスがそのようなものなのか (つまり、更新されたコードを表示するには、ユーザーが 2 回リロードするか、少なくとも 2 つのページにアクセスする必要があるのか​​)、それとも私が何か間違いを犯しているのかはわかりません。検討していただければ幸いです。

0 投票する
3 に答える
3208 参照

service-worker - Service Worker への長時間の待機リクエスト

Service Worker がキャッシュからのアイテムで応答するのを待つ時間が、期待するほど速くないことに気付きました。sw-precache私は両方とカスタム作成された Service Workerで同じ待ち時間を見てきました。

ServiceWorkerへのリクエスト

この待機時間の考えられる原因は何ですか?また、どのように短縮できますか?

fetchカスタム サービス ワーカーでの私のイベントは次のようになります。