apollo を grapql クライアントとして使用する反応アプリがあります。アプリには、サブセット/サブアプリのオフライン サポートが必要になりました。アプリのアセットの事前キャッシュを行い、うまく機能する Service Worker (workbox と webpack のおかげ) があります。ここで、データのサポートを追加する必要があります。アプリは、オンラインのようにオフライン モードで動作する必要があります。つまり、ユーザーはすべてのデータを表示し、アプリが再びオンラインになったときに同期する必要があるいくつかの変更を実行できる必要があります。
考えられる解決策として、次のアプローチがあります。 * Service Worker を使用する: 一連のクエリをトリガーするボタンを追加して、オフライン作業に必要なすべてのデータを取得します。Service Worker ( workbox runtimeCaching
) を使用して、これらのクエリに対するすべての応答をキャッシュします。アプリがオフラインになると、Service Worker がクエリの応答を「提供」するため、アプリは「あたかもオンラインであるかのように」動作し、Service Worker が「プロキシ」として機能して通常どおりクエリを実行します。ミューテーションに「楽観的 ui」アプローチを設定して使用するworkbox
backgroundSync を使用して変更を同期します (基本的に、ブラウザーが再びオンラインになったときにミューテーション アクションをエンドポイントに送り返します)。* いくつかの apollo ネイティブ アプローチ (apollo-cache-persist など) を使用して、クエリ キャッシュを localStorage に保存します。アプリに必要なすべてのクエリをトリガーし、そのキャッシュを保持し、アプリがオンラインでない場合は、それ以降の読み込みでキャッシュからアプリを復元します。
オフライン Web アプリのより適切でシンプルなアプローチは何でしょうか =