2007-07-03 16:54:57

ヘッダ発行によるブラウザキャッシュの挙動の違い調査

テーマ:ブログ

一般に使われているInternet ExploreやFirefoxなどのWebブラウザには、取得したページや画像をキャッシュする機能があります。


これはアクセスするたびに同じページや画像を取得すると時間がかかり、サーバにも負荷がかかってしまうことから、それを防ぐためにある機能です。


これのおかげで、一度見たページなどは比較的早く閲覧ができるわけですが、OpenPNEやその他SNSのような更新が頻繁にあるようなページではキャッシュされると困ることがあります。


例えば


・フレンドが日記を書いて日記一覧が更新された
・コミュニティの掲示板に書き込みがあった


のように更新されているはずのページをアクセスせずに過去に取得したキャッシュを表示してしまうと、更新情報が表示されず、新しい情報を見ることができません。



そのため、現在のOpenPNEの仕様では、ページが取得される際にヘッダに


Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache


というようなブラウザにキャッシュをさせないように指示する情報を埋め込んでいます。



しかし、この場合先ほど述べたようにキャッシュされない場合、全てのページの取得に毎回サーバにアクセスしてしまうため、サーバに与える負荷が高くなってしまいます。

そのため、今回このキャッシュ機能を有効するための設計のための調査を行いました。



今回調査した内容は、OpenPNEのサーバからヘッダをどのように発行、または発行しなかった場合、キャッシュが使われるかを調査しました。

ヘッダの発行の仕方としては以下の三つが考えられます。


・キャッシュを行わないヘッダの発行
・キャッシュを行うヘッダの発行
・キャッシュに関するヘッダを発行しない


また、キャッシュが使われているかどうかをチェックする対象は


・PHPなどによる動的生成ページ
・HTML内で呼び出される画像、CSSファイル、JavaScriptファイル


ブラウザの動作は


・リンクをクリック
・URL入力
・進む、戻る
・F5
・Ctrl+F5


をチェックしました。


以下の画像の表がその結果です。

調査結果表


キャッシュが使われた場合は○、使われない場合は×です。
※がついた○は一回目はキャッシュ、二回目のアクセスは再取得されたものです。


ヘッダの発行有無、またその内容によって変化したのは動的なページへのアクセスで、


・キャッシュのヘッダを発行した場合はリンクやURLアクセスはキャッシュされた後の一回目はキャッシュ使用(表黄色)
・no-cacheのヘッダを発行しない場合は進む、戻るのアクセスはキャッシュ使用(表青)


の二点が異なるという結果になりました。



キャッシュしているにも関わらず二回目は再取得したり、F5とCtrl+F5が同じ動作となってしまっているのはなぜか、今後設計実装に必要そうであれば再調査を行いたいと思います。





追記:07/07/05


キャッシュをするように指示するヘッダは以下のようなヘッダを発行しています。

Expires: Tue, 03 Jul 2007 06:51:56 GMT
Cache-Control: public, max-age=10800
Last-Modified: Tue, 03 Jul 2007 01:38:12 GMT

これは

Expires:有効日時

max-age:有効期間

を発行することでキャッシュするように指示しています。




AD
いいね!した人  |  コメント(0)  |  リブログ(0)

marupneさんの読者になろう

ブログの更新情報が受け取れて、アクセスが簡単になります

コメント

[コメントをする]

コメント投稿

AD

ブログをはじめる

たくさんの芸能人・有名人が
書いているAmebaブログを
無料で簡単にはじめることができます。

公式トップブロガーへ応募

多くの方にご紹介したいブログを
執筆する方を「公式トップブロガー」
として認定しております。

芸能人・有名人ブログを開設

Amebaブログでは、芸能人・有名人ブログを
ご希望される著名人の方/事務所様を
随時募集しております。