Zend кеш не срабатывает

Хорошо, вот проблема:

$frontendOptions = array(
  'lifetime' => 7200,
  'debug_header' => true, // for debugging, but it doesn't work...
  'regexps' => array(

         // Cache the static pages
         '^/pages/' => array('cache' => true),
     )
  );

$backendOptions = $config->cache->backOptions->toArray();

// getting a Zend_Cache_Frontend_Page object
require_once 'Zend/Cache.php';
$cache = Zend_Cache::factory('Page',
  $config->cache->backend,
  $frontendOptions,
  $backendOptions);

$cache->start();

Это ничего не делает вообще. Время загрузки страницы точно такое же, а папка указана в $backendOptions пустой. Что я делаю неправильно?

Кстати: $config->cache->backend читает "file",

3 ответа

Решение

Ну, следуя моей традиции отвечать на мои собственные вопросы, вот ответ и подвопрос, если кто-нибудь знает, что происходит:

По сути, эта вещь не работает "из коробки", если вы запускаете что-то более продвинутое, чем Hello World. У меня был набор файлов cookie, и, поскольку он обнаружил файл cookie, он отказался что-либо с этим делать, поэтому за один час, копаясь в коде кэширования, я обнаружил, что волшебство нужно просто установить

'cache_with_cookie_variables' => true,

И так как все куки более или менее уникальны, и я не хочу о них заботиться, я установил

'make_id_with_cookie_variables' => false

Так что теперь это работает без нареканий.

Спасибо Крису и Смуве за то, что они нашли время, и теперь, оглядываясь назад, ваши комментарии имели большой смысл. Естественно, у меня не было никаких ошибок или предупреждений, и "Файл" действительно был написан заглавными буквами.

Теперь мне интересно, могу ли я при определенных обстоятельствах отправить шип для удаления нужного файла кэша. Я могу забить его (скопировать генератор идентификаторов в кеш и unset() правильную цель), но может быть более изящное решение. Если у вас есть идеи, дайте мне знать.

Пожалуйста, перейдите в config/application.ini и установите:

resources.frontController.params.disableOutputBuffering = true

Если вы закончили с config/application.ini, просто скопируйте и вставьте приведенный ниже код и получайте удовольствие. Пожалуйста, помните временный файл; Я использовал здесь servercache, вы можете использовать temp или tmp или что-то еще.

$frontendOptions = array(
        'lifetime' => 900,
        'automatic_serialization' => true,
        'default_options' => array(
            'cache_with_get_variables' => true,
            'cache_with_post_variables' => true,
            'cache_with_session_variables' => true,
            'cache_with_files_variables' => true,
            'cache_with_cookie_variables' => true,
            'make_id_with_get_variables' => true,
            'make_id_with_post_variables' => true,
            'make_id_with_session_variables' => true,
            'make_id_with_files_variables' => true,
            'make_id_with_cookie_variables' => true,
            'cache'=>true
        ),


    );

    $backendOptions = array(
        'cache_dir' => APPLICATION_PATH . '/servercache/'
    );
    $cache = Zend_Cache::factory('Page', 'File', $frontendOptions, $backendOptions);
    $cache->start();
Другие вопросы по тегам