ZF2-将函数的结果保存在缓存中



我制作了一个视图助手,在输出外部URL之前检查它是否存在。其中一些URL在我的主布局中,所以通过一直调用所有这些URL来检查它们是否存在,这种检查会大大减慢我的网站速度。我想保存该函数的输出,这样它只会在不到一个小时或一天的时间内检查同一个URL。我认为我应该使用Zend Cache来做到这一点?但我不知道从哪里开始,你有什么建议、简单的解决方案或一些基本的教程需要学习吗?谢谢

为缓存服务添加全局配置,如下所示:

config/autoload/global.php

'service_manager' => array(
     'abstract_factories' => array(
            'ZendCacheServiceStorageCacheAbstractServiceFactory',
      )
),

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;
}

相关内容

  • 没有找到相关文章

最新更新