ZF2 - 在缓存中保存函数的结果
ZF2 - Saving a result of a function in cache
我制作了一个视图助手,用于在输出之前检查外部 URL 是否存在。其中一些 URLs 在我的主要布局中,因此通过一直调用所有这些 url 来检查它们是否存在,检查会大大降低我的网站速度。我想保存该函数的输出,以便它只检查一个 URL 如果在不到一个小时或一天的时间内没有检查过同一个。我相信我应该使用 Zend Cache 来做到这一点?但我不知道从哪里开始,你有什么建议、简单的解决方案或一些基本的教程可以学习吗?谢谢!
为缓存服务添加全局配置,如here:
config/autoload/global.php
'service_manager' => array(
'abstract_factories' => array(
'Zend\Cache\Service\StorageCacheAbstractServiceFactory',
)
),
config/autoload/cache.global.php
return array(
'caches' => array(
// Cache config
)
)
使用工厂创建视图助手:
Application/Module.php::getViewHelperConfig()
'LinkHelper' => function ($sm) {
$locator = $sm->getServiceLocator();
return new LinkHelper($locator->get('memcached'))
}
在您的视图助手中使用缓存服务:
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;
}
我制作了一个视图助手,用于在输出之前检查外部 URL 是否存在。其中一些 URLs 在我的主要布局中,因此通过一直调用所有这些 url 来检查它们是否存在,检查会大大降低我的网站速度。我想保存该函数的输出,以便它只检查一个 URL 如果在不到一个小时或一天的时间内没有检查过同一个。我相信我应该使用 Zend Cache 来做到这一点?但我不知道从哪里开始,你有什么建议、简单的解决方案或一些基本的教程可以学习吗?谢谢!
为缓存服务添加全局配置,如here:
config/autoload/global.php
'service_manager' => array(
'abstract_factories' => array(
'Zend\Cache\Service\StorageCacheAbstractServiceFactory',
)
),
config/autoload/cache.global.php
return array(
'caches' => array(
// Cache config
)
)
使用工厂创建视图助手:
Application/Module.php::getViewHelperConfig()
'LinkHelper' => function ($sm) {
$locator = $sm->getServiceLocator();
return new LinkHelper($locator->get('memcached'))
}
在您的视图助手中使用缓存服务:
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;
}