ここ数日、さくらのレンタルサーバーで転送量の低減方法を色々考えています。
Expiresheadersってのは、「各ファイルに1回読み込んだら一定期間再読込みしなくてOKだよ」ってサインを付けるものらしい。
で、コレを導入しようと思うと普通のレンタルサーバーでは結構大変らしいです。
かなり色々なサイトを読み漁ったけど、以下サイトが一番キレイにまとまっていたのでリンク。
普通はサーバーにApacheをインストールして、mod_expiresを使用する。
httpd.confってのを書き換えるらしい。
でもさくらのレンタルサーバーでは無理。
phpと.htaccessを駆使することで同様の効果を狙えるみたいです。
ウチの現状
今の所、亜細亜の蛾さんのページを参考にHTMLのみに
<?php
ob_start ("ob_gzhandler");
header("Content-type: text/html");
header("Cache-Control: must-revalidate");
$offset = 3600;
$ExpStr = "Expires: " .
gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";
header($ExpStr);
?>
ってな一文を書き加えてExpiresheadersもどきを実現しています。
(ウチはhtmlをphp化しています。)
これだけでも結構効果あった。
HTML内には既にインクルード・携帯振り分け等々でphpスクリプトが埋め込まれているので、上記一文のみではCPU負荷は殆ど変わらず。良いねぇ。
あとはdogmap.jpさんのページを参考に画像ファイルなど全てにExpiresheadersを適用しようかどうか。。。ちょっと迷う。
画像ファイルまでPHPでExpiresheadersを付加させると、サーバーにどれくらい負荷がかかるんだろ・・・?さらにセキュリティに対する脆弱性も含まれているようで、それなりの知識をもってしっかり対策しないとこれは怖くてチョット出来ないかな(^_^;
翌日追記
ウチは独自ドメインを取っていて、MTは独自ドメイン取得前から動かしている。
つまり独自ドメイン側のみで上記PHPを利用すれば、丸見えになって困るファイルは何一つ存在しないのだ。PHPでExpiresheaders付加、やってみようかな。。。
「とりあえずそのまま」ではcss、jsファイルのgz化と少しバティングするみたいなので後日お勉強してみる予定。
「RewriteCond」、「RewriteRule」などの単語から調べていくと、それなりに知識を得られそうな事まで解った。続きはまた今度。
その時もApacheのmod_rewrite関連の情報を除外しながら情報収集しないとまたドツボにハマるので、覚えておくこと>私
追記:2009.11.20
dogmap.jpさんのphpを使ったExpiresheaders、何が危険か解った。
.htaccessでMIMEタイプの設定を行う
▲これの事を(もしくは良く似た現象)を言っているんだ。
さらに、PHPでヘッダを付加するとブラウザがMIMEタイプを判断できなくなるみたいで、Firefoxなどで画像を直リンクで表示させると文字情報になって表示される。。。
とりあえず、私の借りているサーバーで動かしてみた所、普通に動くけどやっぱり負荷はもの凄い。1日2万アクセスあるサイトに設置してみた所、1分間だけ動かして止めただけで。。。
503エラーが700回(^_^;
(1分に約20回アクセスのある時間帯。1ページあたり画像のリクエストは40~60回発生)
ほぼ全滅ですね('Α`)
とりあえず、MIMEタイプをくっつける方法と、「IF構文減らす」など負荷対策しないとアクセスの多いサイトでは使えないっぽいです。
まだまだ未完成ですが、続きます
さくらでphpを使ってExpires headersその2(覚書きメモ)