我刚刚开始全神贯注于缓存。我有一个简单的 indexAction() 可以获取所有给定的数据集。我的做法是:
- 检查现有键'controllername-index-index'
- 如果存在:返回键的值
- 如果不存在,请执行正常操作并添加密钥
键中的值应该是将生成并填充我的数据的 ViewModel。
这是我到目前为止所做的:
<?php
public function indexAction()
{
$sl = $this->getServiceLocator();
// $cache = $sl->get('cache');
// $key = 'kennzahlen-index-index';
//
// if ($cache->hasItem($key)) {
// return $cache->getItem($key);
// }
$viewModel = new ViewModel();
$viewModel->setTemplate('kennzahlen/index/index');
$entityService = $sl->get('kennzahlen_referenzwert_service');
$viewModel->setVariable('entities', $entityService->findAll());
// $cache->setItem($key, $viewModel);
return $viewModel;
}
出于测试目的,缓存部分被注释掉了,但基本上这就是我所做的一切。缓存配置/服务如下所示:
<?php
'cache' => function () {
return \Zend\Cache\StorageFactory::factory(array(
'adapter' => array(
'name' => 'filesystem',
'options' => array(
'cache_dir' => __DIR__ . '/../../data/cache',
'ttl' => 100
),
),
'plugins' => array(
array(
'name' => 'serializer',
'options' => array(
)
)
)
));
},
序列化和缓存工作得很好,但我对丢失的结果感到惊讶。根据 ZendDevelopersToolbar 告诉我的内容,没有缓存的时间范围在 1.8s 到 2.5s 之间。取消注释(启用)缓存部分并没有真正改善我页面的加载时间。
所以我的问题是:这种方法完全错误吗?是否有不同的、更快速的部件可以通过一些巧妙的配置技巧来保存?
我觉得 2 秒的页面加载时间肯定太慢了。考虑到大量数据,1s 对我来说是最大值,但肯定不会超过这个:S
所有帮助/提示/建议将不胜感激。提前致谢!