質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
PWA(Progressive Web Apps)

PWA(Progressive Web Apps)は、アプリのようなWebサイトを指します。仕様が異なる様々なデバイスで表示でき、インストールも不要。さらに訪問し続けることでユーザーについて学び、強力なPWAとなります。

Q&A

解決済

1回答

413閲覧

service worker オフライン状態で更新する際に用いるキャッシュは誰が用意しているのか

akiyama3284pga

総合スコア186

PWA(Progressive Web Apps)

PWA(Progressive Web Apps)は、アプリのようなWebサイトを指します。仕様が異なる様々なデバイスで表示でき、インストールも不要。さらに訪問し続けることでユーザーについて学び、強力なPWAとなります。

0グッド

0クリップ

投稿2022/07/21 03:41

編集2022/07/21 03:43

sw.js

self.addEventListener('fetch', function(event) { console.log("in addEventListener('fetch", event.request.url); event.respondWith( caches.match(event.request) .then(function(res) { return res; }) ); });

上sw.jsと同階層に、index.htmlを置いています。
この時同階層なのでindex.htmlはservice workerのスコープ配下になります。
なので、特にregisterしなくても登録されて動くのは理解できます。

しかし、疑問な点としまして明らかにcacheから出している(caches.match())部分があり、キャッシュ内に該当レスポンスが蓄積されていれば、
オフラインでもそこから取り出して使用できると思うのですが、
特にキャッシュに入れる以下のようなコードが無い場合でも動いてしまう理由がわかりません...

sw.js

/* self.addEventListener('install', function(event) { console.log(".addEventListener('install 発火") event.waitUntil( caches.open('my_app_cache') .then(function(cache) { cache.addAll([ '/', './index.html', './src/js/app.js' ]) }) ); return self.clients.claim(); }); */

swが自動的にキャッシュに入れてくれているということでしょうか。
誰がどのタイミングでキャッシュに入れてくれているのか、そのあたりが知りたいと思います

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自分の誤解で、2つ目のコードが無い場合にはキャッシュには入りません。

キャッシュの削除方法が違っていたため思ったような動作になっていませんでした。
ディベロッパツールの"サイトデータを削除"が正しくキャッシュを消す方法でした。

キャッシュを消したことにより、再度 install イベントが発火し、その際にcacheに指定情報が納められました。

投稿2022/07/22 12:34

akiyama3284pga

総合スコア186

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問