2007/12/9 日曜日

Zend_Cache_Frontend_Pageが動かない時。

Filed under: キャッシュ, Zend Framework — ne-zu @ 23:13:27 このエントリをはてなブックマークに追加

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:
  1. <?php
  2.  
  3. // [...] キャッシュセクションの前には、あまり多くの行を書かないようにしましょう。
  4. // [...] 例えば、処理速度を最適化するためには "require_once" や "Zend_Loader::loadClass"
  5. // [...] をキャッシュセクションの後におくべきです。
  6.  
  7. require_once 'Zend/Cache.php';
  8.  
  9. $frontendOptions = array(
  10.    'lifetime' => 7200,
  11.    'debug_header' => true, // デバッグします
  12.    'regexps' => array(
  13.        '^/$' => array('cache' => true),         // IndexController 全体をキャッシュします
  14.        '^/index/' => array('cache' => true),    // IndexController 全体をキャッシュします
  15.        '^/article/' => array('cache' => false), // ArticleController はキャッシュしません
  16.        '^/article/view/' => array(              // ……が、ArticleController の "view" アクションは
  17.            'cache' => true,                     // キャッシュします。また、たとえ $_POST に何らかの
  18.            'cache_with_post_variables' => true,    // 変数が含まれていてもキャッシュを行います
  19.            'make_id_with_post_variables' => true,   // (しかし、そのキャッシュは $_POST 配列に依存します)。
  20.        )
  21.    )
  22. );
  23. $backendOptions = array(
  24.     'cache_dir' => '/tmp/'
  25. );
  26.  
  27. // Zend_Cache_Frontend_Page オブジェクトを取得します
  28. $cache = Zend_Cache::factory('Page', 'File', $frontendOptions, $backendOptions);
  29.  
  30. $cache->start();
  31. // キャッシュにヒットした場合はその結果がブラウザに送信され、スクリプトの処理はここで停止します。
  32.  
  33. // [...] 起動ファイルの終点 (これらの行は、キャッシュにヒットした場合は実行されません)

Powered by PHP-SeeD and WordPress ME