$1 ではなく %1 のお話です。
今まで画像をキャッシュしたり生成したりというのは
全部プログラム側で書いてたわけですが、
if (file_exists(IMG_CACHE_DIR.$cacheFile)) { $image = imagecreatefromjpeg (IMG_CACHE_DIR.$cacheFile); } else { $image = imagecreatefromjpeg ($imgBack); //画像加工処理 imagejpeg($image,IMG_CACHE_DIR.$cacheFile); } header("content-type: image/jpg"); imagejpeg($image); imagedestroy($image);
まあこんなかんじで、キャッシュヒットもプログラム側で書いてたわけで、
これがどうにも地味に遅いので、何とか回避するべく頭をひねったお話です。
でまあ結論から言うと .htaccess のほうで
キャッシュヒットの処理を書いてしまうことに。
こんなかんじです。
//ファイルが画像の場合 RewriteCond %{REQUEST_URI} ^(.*\.(jpg|gif|png|jpeg))$ //cacheフォルダのキャッシュとヒットするか確認 RewriteCond %{DOCUMENT_ROOT}/cache/%1 -f //ヒットしたらリライトして表示させる RewriteRule .* /cache/%1 [L]
ポイントは %1 を使ってRewriteCondでヒットさせた参照を使用することで、
http://a.com/a.gif がキャッシュファイルである http://a.com/cache/a.gif
にヒットさせるってとこですかね。
今まで$1とかしか使ってなかったわけですが、%のが便利だなーと。