Я сделал помощник представления, который проверяет, существует ли внешний URL перед его выходом. Некоторые из этих URL-адресов находятся в моем основном макете, поэтому проверка довольно замедляет мой сайт, вызывая все эти URL-адреса все время, чтобы проверить, существуют ли они. Я хотел бы сохранить вывод этой функции, чтобы он проверял только URL-адрес, если тот же самый не был проверен уже менее чем за час или день. Я считаю, что я должен использовать Zend Cache для этого? Но я понятия не имею, с чего начать, есть ли у вас какие-либо предложения, простые решения или какой-то базовый учебник для изучения? Благодаря!ZF2 - Сохранение результата функции в кеше
0
A
ответ
2
Добавить глобальную конфигурацию для службы кэша, как here:
конфигурация/автозагрузка/global.php
'service_manager' => array(
'abstract_factories' => array(
'Zend\Cache\Service\StorageCacheAbstractServiceFactory',
)
),
конфигурация/автозагрузки/cache.global.php
return array(
'caches' => array(
// Cache config
)
)
Используйте фабрику, чтобы создать свою Просмотреть Помощник:
Применение/module.php :: getViewHelperConfig()
'LinkHelper' => function ($sm) {
$locator = $sm->getServiceLocator();
return new LinkHelper($locator->get('memcached'))
}
Использование кэша службы в вашем View Helper:
LinkHelper.php
protected $cache;
public function __construct($cache)
{
$this->cache = $cache;
}
public function __invoke($url)
{
$cacheKey = md5($url);
if ($this->cache->hasItem($cacheKey) {
return $this->cache->getItem($cacheKey);
}
$link = ''; // Parse link
$this->cache->setItem($cacheKey, $link);
return $link;
}
Я получил эту ошибку (Я выполнил вашу инструкцию и использовал связанную конфигурацию): исключить исключение «Zend \ Cache \ Exception \ ExtensionNotLoadedException» с сообщением 'Need ext/memcached version> = 1.0.0' – Aise
Если у вас нет 'memcached', вы можете просто использовать кеш' filesystem'. Пример конфигурации вы можете увидеть здесь (http://stackoverflow.com/a/18597132/1129939). И не забудьте сделать каталог 'data/cache' доступным для записи! –
Отлично! Похоже, ошибок нет, но как я могу проверить, действительно ли это работает? – Aise