キャッシュ


f:id:tenman:20090826121716j:image

ブログなどでサイトの運営を始めると、表示速度の問題に突き当たります。


phpなどで、アクセスに応じて、レスポンスがある仕組みは、スタティックなhtmlに比べ表示に時間がかかります。


このため、コピーを用意しておいて、それを見せてお茶を濁す。 キャッシュ という仕組みがあります。


キャッシュには、サーバでキャッシュしておくものと、閲覧した人のコンピュータに残るものがあります。サーバサイドキャッシュとクライアントサイドキャッシュと呼ぶことにします。



運営する人は、クライアントキャッシュの有効期限をできるだけ長くしたいのですが、長くしすぎると、更新しているのに、閲覧者は、キャッシュを見ているだけで、新しいページを閲覧できなくなるジレンマに襲われることになります。


楽をするために、いろんなアイディアが沸いてきます。


その一例をメモします。

base.css?ver=20090101

などのように、クエリを付加して、別なファイルとして、読み込ませるというアイディアを見かけます。



偶然、mod_expiresとmod_rewriteを使ってサイトの帯域節約と体感速度を向上させる方法 | cyanoというエントリを見つけて、なるほど、



実は、私、「mod_rewrite 弊害」というキーワードで、mod_rewriteをやめてしまったほうがいい理由を探していたのに、


何はともあれ、書いてみました。

.htacess

RewriteEngine On
RewriteBase   /hatena/css

RewriteRule ^css/standard(.*)\.css$ css/standard\.css [L]
css/standard.css

/* CSS Document */
h1{color:red;}
body{background:#ccc;}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html lang="ja" xml:lang="ja" xmlns="http://www.w3.org/1999/xhtml">

<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	<meta http-equiv="content-style-type" content="text/css" />
	<link rel="stylesheet" 
    href="/hatena/css/css/standard_
<?php echo date ("Ymd", filemtime('css/standard.css'));?>.css" 
    media="all" />
	<meta name="keywords" content="mod_rewrite" />
	<meta name="description" content="mod_rewrite アイディア" />
	<link rel="start" href="./" />

	<title>mod_rewrite アイディア</title>

</head>
<body>

<h1>mod_rewriteを使って、cssの更新を反映させる。</h1>

</body>

</html>

関連
http://journal.mycom.co.jp/news/2008/09/01/016/index.html