rita-mordio.infoで何気にPEARのCache_Liteを使っているが、キャッシュの保存先にtmpfsである/dev/shm*1を指定することでメモリキャッシュを実現…って当たり前ですかね?
以下rita-mordio.infoのソースコードの一部。
<!-- 前略 --> <?php require_once("Cache/Lite.php"); require_once("settings.inc.php"); require_once("functions.inc.php"); $cacheOptions = array( 'cacheDir' => '/sites/tmp/', 'lifeTime' => 60*60*CACHE_FLUSH_HOUR, ); if(FORCE_CACHE_FLUSH) $cacheOptions['lifeTime'] = 1; $objCL = new Cache_Lite($cacheOptions); if($_GET["m36"] == 1) { $m36 = true; $cacheObject = "info.rita-mordio.tumblr.rita.m36.rendered"; } else { $cacheObject = "info.rita-mordio.tumblr.rita.rendered"; } if($cache = $objCL->get($cacheObject)) { $buf = "<!-- Cache hit! -->".$cache; }else{ $buf = "<!-- Last updated: ".date("r")." -->"; //後略
/sites/tmpは/dev/shmに向けるようにしてある。tmpディレクトリをtmpfsでマウントしてもいいが。
lrwxrwxrwx 1 root root 8 5月 1 15:36 2013 tmp -> /dev/shm
安全のため、/dev/shmをnoexecでマウントしておくといいかも。アパマギ(Apache Magica)攻撃とかは大抵そこに一時ファイル置くみたいだし。
# mount -o remount,noexec,nosuid,nodev /dev/shm # mount … tmpfs on /dev/shm type tmpfs (rw,noexec,nosuid,nodev) … #
(参考:noexecでマウントする at www.morihi-soc.net)
キャッシュを何に使ってるかって?tumblrから取得したデータを処理、キャッシュしてtumblr APIの負担を減らすためだよ。
*1:CentOSの場合。ディストリビューションによっては異なるかも