1. ホーム
  2. android

[解決済み] PWAはいつ、どのように更新されるのか?

2023-03-31 14:10:55

質問

私の知る限り、PWA の Web サイトで "add to homescreen" をクリックすると、ブラウザは提供されたマニフェスト ファイルとソースを使用して .apk を生成し、通常のアプリと同様にインストールします。

私は、Web サイトを更新すると、アプリも更新されたコンテンツを表示することに気づきました。これは、アプリが Web サイトにアクセスするための単なるラッパーであることを示唆しています。また、Web サイトの更新が即座に表示されないことに気づきましたが、これは内部キャッシュによるものだと思われます。

私の質問は、私の推測が正しいかどうかということです。あるいは、より一般的には、PWA はいつ、どのように更新されるのか、また、クライアント マシン上で強制的に更新する方法はあるのでしょうか。

どのように解決するのですか?

キャッシュシナリオなし(Service workerなし)。 PWAアプリはService Workerを使用したときのみキャッシュされます。Manifest.jsonを使用することで、ホーム画面にアイコンを表示したり、アドレスバーなしでアプリを開いたりすることができます。サービスワーカーがない場合、またはブラウザが対応していない場合、Webページは毎回新しく読み込まれます。キャッシュはありません。

キャッシュオンシナリオ(サービスワーカーあり)。 サービスワーカーが設定されていると仮定すると、サービスワーカーはキャッシュ用に設定されたファイルを遅延ロードまたはプリフェッチすることでキャッシュできます(html、CSS、画像からJSON/XML APIレスポンスまで何でもキャッシュを含めたり除外したりすることが可能です)。

初期キャッシュの後、サービスワーカーはキャッシュを使用して、アプリのネットワークリクエストを キャッシュアプローチ に基づいてキャッシュを使用します。

  • キャッシュのネットワークへのフォールバック
  • ネットワークからキャッシュへのフォールバック
  • キャッシュの後にネットワーク

ほとんどのアプリは プリキャッシュ を選択し、読み込み時に新しいファイルを探し、変更が見つかった場合は次のセッションで読み込むか、ユーザーに更新を促します。このソリューションでは、サービス ワーカーによってキャッシュされた各ファイルには、長いハッシュ文字列が設定されます。各アプリケーションのロード時に、サーバーからハッシュ コードが取得され、どのファイルが更新される必要があるかが調べられ、同じものが別のサービス ワーカーのスレッドで更新されることになります。これは、クロームデベロッパーツールのネットワークタブ -> サービスワーカーのレスポンスで確認できます。

ネットワーク ファーストのアプローチを選択した場合、最初の読み込み時に古いコンテンツを表示することは避けられますが、キャッシュによってもたらされる大きなパフォーマンスの利点は失われます。