5

applicationCacheを介してオフラインで使用するために必要なすべてのコードとデータをキャッシュするWebアプリを作成しました。ただし、アプリが起動するたびに、すぐに更新を確認しようとします。これにより、更新するものが見つからない場合でも、ブラウザがかなりの時間ブロックされます。この動作はアプリを非常に混乱させます(とにかく、バックグラウンドで更新を行うべきではありませんか?)。モバイルデバイスではチェック段階だけで多くの時間がかかり、更新が見つかった場合、ダウンロードにかかる時間についてはすべての賭けが無効になります(b / cすべてのファイルを再ダウンロードする必要があります)-これもブラウザをフリーズさせます。

だから、私は疑問に思っています:

  1. applicationCacheの更新を共有Webワーカーに委任する方法はありますか?また
  2. ユーザーが特に更新を確認する必要があり、applicationCache.update()を介して更新を開始するボタンを押すまで、すべてのapplicationCache更新をブロックする方法はありますか?また
  3. 更新のチェックに費やされる時間を軽減する他の方法はありますか?
  4. アプリケーションキャッシュの更新をバックグラウンドで非同期に実行するべきではありませんか?



編集:おそらくマニフェストファイルに注意深く構築されたキャッシュ制御ヘッダーが答えですか?これについては調査しますが、誰かがこれらの更新についてもっと情報を教えてくれることを願っています。ありがとう。


アップデート

わかりました、私はヘッダーで遊んだことがありますが、何も役に立ちませんでした。私は賞金を始めています。あなたが助けることができるならば、してください!

4

2 に答える 2

1

ユーザーが実際の更新をより詳細に制御できるようにする場合は、マニフェスト URL をそのユーザー固有のものでパラメーター化できます。次に、ユーザーが更新したい場合は、その特定のユーザーのマニフェスト ファイルをロールするサーバーにリクエストを送信し、クライアント側でページをリロードして、マニフェストのリロードを強制します。

それ以来、私はいくつかの読書を行っており、この記事に出くわしました。これは、ユーザーが既にキャッシュされたページにいる場合、はるかにエレガントなソリューションのようです-

http://www.html5rocks.com/tutorials/appcache/beginner/#toc-updating-cache

マニフェストの最新チェックに伴う読み込み時間に関しては、これまで問題が発生したことはありません。私の理解では、それはバックグラウンドで発生するということでした。ブラウザが読み込みのヒントを表示することだけが心配ですか?

于 2011-05-30T16:18:55.640 に答える
0

abort()メソッドが答えになるかもしれません...いつか、しかし私はまだそれを実装しているブラウザーに出会っていません。

私は同様の問題を抱えていて、マニフェストを自分自身の中に入れて自分自身をキャッシュするかどうかを確認するというワイルドなアイデアを含め、すべてを試しました。したがって、ajaxリクエストを使用して手動で更新を行い、localStorageに詰め込まれたjavascriptを評価することができました...いいね。

最後に、単純なマニフェストを含む非常に単純な html ページを作成しました。テストしたところ、UI はロックアップしませんでした。ゆっくりとページに何かを追加し始め、マニフェストのコンテンツをいじって、applicationCache チェック中に何が原因でフリーズするかを調べました。ページに画像を追加したときに最終的に失敗しましたが、マニフェストから除外しました.UIが再びロックアップし始めたのはその時です. 元のプロジェクトに戻り、マニフェストに含める必要があるいくつかの画像を見つけ、UI のロックの問題も修正しました。

applicationCache のチェック フェーズは、(少なくとも私がテストしたデバイスでは) 非同期にしようとします。ただし、マニフェストに欠落しているファイルがある場合は、applicationCache のチェックが完了するまですべてを待機する必要があります

ブラウザがキャッシュされていないファイルを必要とする場合、アプリケーションキャッシュが更新を完了するのを待ってから、ファイルをリクエストするようです。これは、他のリソースが不足しているファイルに依存している可能性があるため、理にかなっています。 . これにより、レンダリングにブレーキがかかり、UI がフリーズします。マニフェストにアクセスできない場合 (別のネットワークなど)、UI が約 1 分間ロックされることがあります。

マニフェストに追加する必要があるファイルを見つけるには、アプリを数回更新しながらサーバー ログを確認します。疑わしいのは、マニフェスト以外のファイルに対する GET 要求です。

于 2011-09-08T18:41:56.200 に答える