Category Archives: キャッシュ

Zend_Cache_Frontend_Pageが動かない時。

Zend Framework: Documentation Zend_Cache_Frontend_Page
Zend_Cache_Frontend_Pageはとても便利だと思います。実際に使ってみたところ少しハマってしまいましたので参考になればと思います。

・知らぬ間にクッキーがあった。
→make_id_with_cookie_variablesをtrueに。

GoogleAnalyticsなどで意図しないCookieが埋め込まれている場合がありますので、その場合はCookieがあってもキャッシュされるようにしなくてはいけません。

・start()後にob_gzhandlerを使用している。
キャッシュ開始($cache->start())後にob_gzhandlerがあると、復元できない状態でキャッシュされてしまうようです。ob_gzhandlerを使いたい場合は、キャッシュをスタートさせる前にob_gzhandlerを宣言しましょう。

他にもハマリどころはありますでしょうか?
私もまだまだ使い始めですので、また何かあればUPしていこうと思います。

一応ソースを載せておきます。といっても公式そのままですが。
[php]
7200,
‘debug_header’ => true, // デバッグします
‘regexps’ => array(
‘^/$’ => array(‘cache’ => true), // IndexController 全体をキャッシュします
‘^/index/’ => array(‘cache’ => true), // IndexController 全体をキャッシュします
‘^/article/’ => array(‘cache’ => false), // ArticleController はキャッシュしません
‘^/article/view/’ => array( // ……が、ArticleController の “view” アクションは
‘cache’ => true, // キャッシュします。また、たとえ $_POST に何らかの
‘cache_with_post_variables’ => true, // 変数が含まれていてもキャッシュを行います
‘make_id_with_post_variables’ => true, // (しかし、そのキャッシュは $_POST 配列に依存します)。
)
)
);
$backendOptions = array(
‘cache_dir’ => ‘/tmp/’
);

// Zend_Cache_Frontend_Page オブジェクトを取得します
$cache = Zend_Cache::factory(‘Page’, ‘File’, $frontendOptions, $backendOptions);

$cache->start();
// キャッシュにヒットした場合はその結果がブラウザに送信され、スクリプトの処理はここで停止します。

// […] 起動ファイルの終点 (これらの行は、キャッシュにヒットした場合は実行されません)
[/php]