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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

2081閲覧

PWAは静的ファイルしかキャッシュしないのでしょうか?

otftrough

総合スコア476

PWA(Progressive Web Apps)

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/09/16 05:09

編集2020/09/16 05:25

既存サイトをPWA化してオフラインでも使用できるようにしたいのですが、index.htmlならうまくいきますが
phpやpythonのサイトではキャッシュされません。

PythonはDjangoを使っており、sw.jsには"/"をキャッシュするようにしています。
しかし、PCやスマホにPWAサイトをインストールしても、オフラインの状態で開くと「インターネットに接続されていません」的なメッセージが出ます。

同じやりかたでも、index.htmlはキャッシュされます。

なにか特殊な方法が必要でしょうか?


追記

index.htmlでのServiceWorkerの登録は下記のようになっています。

JacaScript

1 2if ('serviceWorker' in navigator) { 3 navigator.serviceWorker.register('sw.js') 4 .then(reg => { 5 console.log('Service worker registered.', reg); 6 reg.onupdatefound = () => { 7 console.log('cash update.'); 8 reg.update(); 9 } 10 if (typeof reg.update == 'function') { 11 console.log('cash update.'); 12 reg.update(); 13 } 14 }); 15} else console.log('Service worker can\'t registered.');

sw.jsの中身です。

JacaScript

1var CACHE_NAME = "otft-info-20200914"; 2var urlsToCache = [ 3 "/", 4 "index.html", 5 "info/otftnamelogo.png", 6 "info/note.svg", 7 "info/beat01.png", 8 "info/LogIcon.png" 9]; 10 11self.addEventListener('install', function(event) { 12 event.waitUntil( 13 caches 14 .open(CACHE_NAME) 15 .then(function(cache){ 16 return cache.addAll(urlsToCache); 17 }) 18 ); 19}); 20 21self.addEventListener('fetch', function(e) { 22}); 23 24self.addEventListener('activate', function(event) { 25 event.waitUntil( 26 caches.keys().then(function(cacheNames) { 27 return Promise.all( 28 cacheNames.filter(function(cacheName) { 29 return cacheName !== CACHE_NAME; 30 }).map(function(cacheName) { 31 console.info("delete cache: " + cacheName); 32 return caches.delete(cacheName); 33 }) 34 ); 35 }).then(() => { 36 clients.Claim(); 37 }) 38 ); 39});

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

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

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

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

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

maisumakun

2020/09/16 05:12

> 同じやりかたでも、index.htmlはキャッシュされます。 それは「PWAとしてのキャッシュ」で間違いないですか?単に「ブラウザのキャッシュ」が残っているだけ、ということはないですか?
otftrough

2020/09/16 05:21

リロードしたら表示できなくなりました。 ブラウザキャッシュだったようです。 すみません。
guest

回答1

0

activate ではなく fetch を実装する必要があるのではないでしょうか?
https://developer.mozilla.org/ja/docs/Web/Progressive_web_apps/Offline_Service_workers

投稿2021/02/02 07:49

juner

総合スコア128

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問