Page Cacheの内部動作を調べる必要があったので、上記記事を読んでみた。ざっと見ただけで内部動作については書かれていない事は分かったが、取り敢えずちょこっとピックアップして和訳。
Page Cache Overview
- Page Cache=Firefoxの"Back-Forward Cache"、"bfcache"、Operaの"Fast History Navigation"と呼ばれる。
- WebKitの"Back/Forward List"と"Page Cache"は違う(らしい)。
- Page Cacheはウェブをよりスムーズに移動出来る様にするためのエンドユーザ向けの機能。
- "HTTP sense"、"disk cache"、"memory cache"における"cache"とは異なる。
- Page Cacheは「あるページを移動する時に"一時停止"し、そのページに戻ってきた時に"再生"する」機能。
- 新しいページに遷移する場合、前のページのDOM、JavaScript、プラグイン、画像等はクリアされてしまうと、戻るボタンで戻ってくると再度これらリソースをネットワーク上から取得して、ページを再構築しなければならず、非効率。
- 以前のページのリソースを(戻るボタンを押された場合のために)解放せずに維持しておくのがPage Cache。
Why Wouldn't Work?
- Page Cacheがそんなに素晴らしいものならば、新しいページに遷移する時にWebKitは常にPage Cacheを使わないのか?
Some Pages aren't Interesting
- ページロードが未完了、もしくはエラーの場合や、他のURLにリダイレクトするページの場合にはPage Cacheは動作しない。
Some Pages are Complicated
- ウェブページはPage Cacheされる事を想定されていないかも知れないため、"一時停止"する事が難しい場合もある。WebKitが"一時停止"できないネイティブコードを持つプラグインを持つ場合や、WebKitが履歴上キャッシュ管理していない複数フレームを持つページ等があげられる。
Some Pages are Secure
- WebKitは全てのHTTPSサイトをPage Cacheから展開する事を許可していない。
Planned Improvements
- revision 48036では主要な制約が解消され、フレームを持ったページのPage Cacheが可能。
- Plug-inサポートは計画中改善の中の大きなアイテム。
Unload Handlers
- unloadイベントは、ユーザがページをクローズした時にページにcleanup処理をさせるために設計されたもの。
- Page Cache内にページを移動させる前に、ブラウザはunloadイベントを発火させる事ができない。
- もしブラウザがunloadイベントを行わずにPage Cacheにページを移動させるならば、そのページは"一時停止"されて隠れている間にブラウザによって解放されるかも知れず、その場合cleanup処理は決して動作しない。
- unloadイベントの目的はページが閉じられる時の重要な処理を許可する事であり、全ての主要ブラウザはそのようなページをPage Cacheに移動する事を拒絶しており、ユーザ操作上のインパクトに繋がる。
0 件のコメント:
コメントを投稿