2010-11-07 26 views
2

我们的软件使用元素缓存在CakePHP的应用程序下面的方法:在CakePHP中,元素缓存没有做任何事情

示例代码:

<?php echo $this->element('cities-index', array('Cache' => array('time' => "12 hours")));?> 

根据相关文档,这应该只是罚款。

我已经分离出这种说法是我们的​​网页加载的主要原因慢(这个操作成本我们0.2秒每页执行),我已经得出这样的缓存是做绝对没有发现。

缓存在core.php中启用并设置为文件和应用程序的/ tmp文件夹有正确的权限。我们已经苦心经历了CakePHP文档并且被难住了。

我们将不胜感激任何帮助,谢谢!

回答

0

我不知道什么是你的缓存配置,但对我来说缓存的元素并不意味着你缓存控制器和模型调用(这里我认为是真正的瓶颈)。尝试缓存数据库调用,并且您的应用程序可能会变得更快。

+0

我们启用上的控制器级缓存中,通过引用缓存助手,以及$所有密集型数据库调用cacheActions。请原谅我,如果我错了,但不是元素缓存等同于“片段缓存”的意思,它应该绕过任何和所有的计算,并简单地呈现缓存的HTML输出? – Mark 2010-11-08 06:12:01

+0

不是,因为控制器代码已经在视图代码之前执行过,所以它已经被执行以及DB调用。只要确保你缓存结果。 – 2010-11-08 07:38:24

+0

有趣,感谢您的解释。不幸的是,我们已经在控制器中进行缓存,但我会研究该部分是否正常工作。谢谢您的帮助。 – Mark 2010-11-08 07:53:01

0

您的调试级别设置为?某些调试级别(1或2 - 我不记得)会禁用缓存。

这也可以CakePHP的1.2.x版本1.3.x版和之间变化 - 所以知道什么版本将是有益的了。

1

小写的“缓存” “12小时”,而不是'12小时 增加了一个关键

$this->element('cities-index', array('cache' => array('key'=>'cities-cache','time' => '+12 hour'))); 

聂第一,但在原来的信息的评论中发布了正确的答案。它可能没有被注意到。