|
|
apache22のキャッシュ機能を利用してみる
|
|
|
|
|
|
|
設定
|
|
Webサーバー
|
apache22のキャッシュ機能を利用してみる
|
| |
|
|
|
|
|
キャッシュ用ディレクトリを作成します。
mkdir /home/tmp/httpd/disk_cache chown www:www /home/tmp/httpd/disk_cache
/usr/local/etc/apache22/Includes/mod_disk_cache.conf
/ 以下をキャッシュする場合の apache の設定です。
# # Apache mod disk cache Configuration #
# LoadModule cache_module modules/mod_cache.so
# LoadModule disk_cache_module modules/mod_disk_cache.so CacheRoot /home/tmp/httpd/disk_cache CacheEnable disk / CacheDirLevels 5 CacheDirLength 3 CacheDefaultExpire 86400
# On のとき、キャッシュされているコンテンツを返さないようにクライアントから # 要求されても無視する CacheIgnoreCacheControl On
# Last-Modifiedによる最終修正時刻がないドキュメントはキャッシュされない。 # CacheIgnoreNoLastMod を On にすると、Last-Modified 日時がなくても # キャッシュされるようになる CacheIgnoreNoLastMod On
#LoadModule mem_cache_module modules/mod_mem_cache.so CacheEnable mem / MCacheSize 4096 MCacheMaxObjectCount 100 #MCacheMinObjectSize 1 MCacheMaxObjectSize 2048
/dir1 と /dir2 以下のみキャッシュしたいなら、下記のような設定をします。
CacheEnable disk /dir1 CacheEnable disk /dir2
キャッシュのクリーンナップには、 htcacheclean を利用します。
htcachecleanの設定
デーモン化するか、手動で実行するかを選ぶことができますが、デーモン化する設定の場合。
sudo vi /etc/rc.conf
htcacheclean_enable="YES" htcacheclean_cache="/home/tmp/httpd/disk_cache" htcacheclean_cachelimit="1024M"
htcachecleanの起動
% sudo /usr/local/etc/rc.d/htcacheclean start Starting htcacheclean.
% ps auxww|fgrep htcache root 3984 3.4 0.4 4696 1840 ?? Rs 12:47AM 0:00.40 /usr/local/sbin/htcacheclean -p/home/tmp/httpd/disk_cache -d60 -l1024M -t -n -i
HTMLページの場合は 〜 の間に以下の3行を書きます。
Perl/CGIの場合は HTTPヘッダで以下のような出力をします。 print "Content-type: text/htmln"; print "Pragma: no-cachen"; print "Cache-Control: no-cachen"; print "Expires: Thu, 01 Dec 1994 16:00:00 GMTnn";
PHP/CGIの場合は Perlと同じくHTTPヘッダに以下のような出力をします。 header("Content-Type: text/html; charset=文字コード"); header("Expires: Thu, 01 Dec 1994 16:00:00 GMT"); header("Last-Modified: ". gmdate("D, d M Y H:i:s"). " GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache");
ワードやエクセルファイルなどの場合は サーバの設定を変更して、HTTPヘッダを追加します。 サーバが Apache の場合は、httpd.conf で以下の設定を加えます。
Header set Pragma no-cache Header set Cache-Control no-cache Header set Expires "Thu, 01 Dec 1994 16:00:00 GMT"
ただし、これらの設定によってキャッシュを完全に抑止できる訳ではありません。 ブラウザの種類やバージョンやバグによって、上記の指定が無効だったり、 ネットワーク上のプロキシサーバーがキャッシュしてしまったりする場合があります。
|
|
|