ノノログ

ホーム / ブログ / baserCMS / baserCMSを700倍高速化するHack

baserCMSを700倍高速化するHack

キャッシュが生成されていた場合、CakePHP及びbaserCMSを介さずにキャッシュデータを呼び出す処理を作った。
ベンチとったら700倍の速度が出たので備忘録。

ファイルパスが環境依存だったりするので、どこでも動くよう調整してプラグイン化したら、また晒す。

ちなみに、下記をwebrootのindex.phpの最初に記述してあげれば動く

/**

// URI判別
// 頭に「/」がついて入ってくる
$requestUrl = $_SERVER['REQUEST_URI'];
if(preg_match("/\/$/", $requestUrl)) {
    // 最後がスラッシュで終わっている場合は index を付与する
    $requestUrl .= "index";
}

// CakePHPのキャッシュファイル名の変換
$path = str_replace('/', '_', $requestUrl);
$path = preg_replace("/^_/", "", $path);
$path = strtolower($path);

$cachefileName = dirname(__FILE__) . '/../tmp/cache/views/'. $path .'.php';

// ログイン判別 - 管理者としてログイン中はキャッシュを利用しない
session_start();
if (file_exists($cachefileName) && empty($_SESSION['Auth'])) {
    $output = file_get_contents($cachefileName);

    // nocache判別 - nocacheを利用していたらcacheをそのまま利用しない(出来ない)
    if (strpos($output, 'nocache' === false)) {
        $output = preg_replace("/\<\?php.*\?\>/s", "", $output);

        // キャッシュの有効時間判別
        if (preg_match('/^{C}/', $output, $match) && isset($match[1])) {
            if (time() <= $match[1]) {
                echo $output;
                exit();
            }
        }
    }
}

このエントリーをはてなブックマークに追加