Jay's Room

思ったこと、感じたこと、未来の自分に伝えたいことを記していきたい

Movable Type PHP化による負荷を軽減(HTTP 1.1 条件付きGET)

MovableTypeをPHP化している場合には、
HTTP1.1で規定されている「条件付きGET」が行われないというエントリーを見つけた。

小粋空間: HTTP/1.1 の「条件付きGET」を利用して PHP ファイルアクセスによるサーバ負荷を削減する

詳細は小粋空間に書いてあるが、要するに、
HTMLファイルを.phpの拡張子にすると、
更新されていなくてもブラウザのキャッシュが使われず、
毎回ファイルがダウンロードされるということだ。

条件付きGETをするための方法は、
小粋空間にも書かれているこちらを参考にした。
「条件付きGET」のススメ - Ogawa::Memoranda

Jay's Roomの場合、特にファイルをインクルードしたりはしていないので、
単純なケースのコードを、テンプレートの先頭に書けばOK

<?php $ts = getlastmod();

doConditionalGet($ts);

function doConditionalGet($timestamp) {
// A PHP implementation of conditional get, see
// http://fishbowl.pastiche.org/archives/001132.html
$last_modified = gmdate('D, d M Y H:i:s T', $timestamp);
$etag = '"'.md5($last_modified).'"';
// Send the headers
header("Last-Modified: $last_modified");
header("ETag: $etag");
// See if the client has provided the required headers
$if_modified_since = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ?
stripslashes($_SERVER['HTTP_IF_MODIFIED_SINCE']) :
false;
$if_none_match = isset($_SERVER['HTTP_IF_NONE_MATCH']) ?
stripslashes($_SERVER['HTTP_IF_NONE_MATCH']) :
false;
if (!$if_modified_since && !$if_none_match) {
return;
}
// At least one of the headers is there - check them
if ($if_none_match && $if_none_match != $etag) {
return; // etag is there but doesn't match
}
if ($if_modified_since && $if_modified_since != $last_modified) {
return; // if-modified-since is there but doesn't match
}
// Nothing has changed since their last request - serve a 304 and exit
header('HTTP/1.1 304 Not Modified');
exit;
}
?>

これをメインページ・個別アーカイブ・カテゴリアーカイブ・日付アーカイブの先頭に記述して、
すべて再構築すれば完了。

これで表示が少し早くなればいいな。

Posted by Jay at 2007年01月31日 10:42 | コメント (0) | トラックバック (0) | このエントリーを含むはてなブックマーク | Clip!!
このカテゴリの最新エントリー
07/02/04 - Movable Type の検索を Google Co-op に切り替え
07/02/03 - MovableTypeにいろいろ手を入れてみた
07/01/31 - Movable Type PHP化による負荷を軽減(HTTP 1.1 条件付きGET)
07/01/30 - Movable Type 3.34 で FastCGI
- FastCGIインストール

この記事に対するコメント

この記事に対するコメントはまだありません。


コメントを投稿する




保存しますか?



この記事のトラックバックURL


この記事に対するトラックバック

この記事に対するトラックバックはまだありません。



Made with dreamweaverMade with fireworksPowered by Movable Type 3.34Powered by Wandering Windbeta_tester.gif
Copyright : [Articles] (C) Jay's Room All Rights Reserved.
[Comments/Trackbacks] ... Authors of those have rights.