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();