2011年11月3日木曜日

HTML5 AppCache 細かい挙動の要点だけ

Google Developer Day 2011のオフラインコンテンツのセッションでAppCacheの話が出たんだけど、細かい挙動がよくわからなかったので調べてみた。

基本的な所は色んなブログとかがあるので、ググると良いと思う。



調べたのはもうちょっと微妙な所です。ちなみにOSX版のGoogle Chrome15.0.874.106で調べた。 間違ってたらコメントください。

  • CACHEにあるものは一度キャッシュされたらオンラインの状態でも更新されない(リロードボタンを押しても同じ) 
  • manifestを更新すれば、2回目の再読み込みでAppCacheが更新される  manifest更新後、一回目の再読み込みでは変更されないことに注意。 
  • manifestの変更は、コメント行でもOK。なので#VERSION 1みたいな行を付けるのが定石 
  • CACHEとNETWORK両方にエントリがあると、CACHEの方が勝つ=オンラインでも更新されない 
  • manifest設定をしているhtmlファイルそのものは暗黙でキャッシュされることに注意。(なので明示的に書いたほうが良いマナー。) 
  • NETWORKとFALLBACKの両方にエントリがある場合、NETWORKの方が優先されて、FALLBACKしないっぽい。FALLBACKさせるリソースはNETWORKに書かない
  • つまり、設定が強いのはCACHE>NETWORK>FALLBACKの順。常にネットワーク参照させたいリソースはCACHEに書かないし、FALLBACKさせたいコンテンツはNETWORKに書かない。
WebKitベースのスマートフォンブラウザは基本的に対応してると考えて良いので、スタティックなコンテンツは積極的にAppCacheに入れてくのが良さそうだ。

「オンラインな場合はキャッシュを更新する。オフラインならキャッシュをそのまま出す。」みたいのはJavaScriptで書く必要があるのかな。
<追記>思ったんだけど更新が必要なリソースにおいてそれがキャッシュなのか古いデータなのか分からない設計はそもそも良くないので適切なデータにFALLBACKさせるべきと思った。

0 件のコメント:

コメントを投稿