0

我制作了一个视图助手,用于在输出之前检查外部 URL 是否存在。其中一些 URL 在我的主要布局中,因此通过一直调用所有这些 URL 来检查它们是否存在,检查会大大降低我的网站速度。我想保存该函数的输出,以便它仅在不到一个小时或一天之内未检查相同 URL 的情况下检查 URL。我相信我应该使用 Zend Cache 来做到这一点?但我不知道从哪里开始,您有什么建议、简单的解决方案或一些基本教程要学习吗?谢谢!

4

1 回答 1

2

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

配置/自动加载/global.php

'service_manager' => array(
     'abstract_factories' => array(
            'Zend\Cache\Service\StorageCacheAbstractServiceFactory',
      )
),

配置/自动加载/cache.global.php

return array(
    'caches' => array(
         // Cache config
    )
)

使用工厂创建您的 View Helper:

应用程序/Module.php::getViewHelperConfig()

'LinkHelper' => function ($sm) {
     $locator = $sm->getServiceLocator();
     return new LinkHelper($locator->get('memcached'))
}

在 View Helper 中使用缓存服务:

链接助手.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;
}
于 2015-03-23T21:42:43.640 回答