Php 比较Zend cache前端选项:它们是否节省了相同数量的资源?

Php 比较Zend cache前端选项:它们是否节省了相同数量的资源?,php,zend-framework,caching,resources,Php,Zend Framework,Caching,Resources,-我有一个疑问。鉴于此控制器/视图结构: 索引控制器: Zend_Cache can be configured to cache several types of output, including the results of function calls, the results of object and static method calls, entire pages, and configuration data. -索引视图: class IndexController e

-我有一个疑问。鉴于此控制器/视图结构:

索引控制器:

Zend_Cache can be configured to cache several types of output, including 
the results of function calls, the results of object and static method calls, 
entire pages, and configuration data.
-索引视图:

class IndexController extends Zend_Controller_Action
{
 public function indexAction()
 {
  //Post is a db_table model
  $post_manager=new Post();
  $Post=$post_manager->getFirstPost();
  $this->view->post=$Post;
 }
}  
我可以决定直接在索引控制器中缓存我的数据库记录集,或者使用输出前端在视图Index.phtml中缓存我的输出

上述解决方案是否节省了相同数量的系统资源

谢谢


卢卡

两者都能为你节省一些资源。您可以缓存其中一个或两个。这在很大程度上取决于您的确切代码。有些结构不能被缓存,SimpleXML就像twitter提要一样,所以需要缓存输出

您可以缓存模型的调用。你可以缓存你的配置

但我仍然认为这是一种过早的优化,这是万恶之源

更新:我会有选择地缓存输出

在控制器中,我将遍历这些项,并检查该项是否有缓存,如果有,则将其分配给某个输出变量,否则从DB获取。然后在视图中回显预加载的值或渲染部分。我假设呈现数据是瓶颈

但最后,我想最好的解决方案是缓存整个posts部分的整个输出。如果它每天改变一次,甚至每小时改变一次,那将是巨大的好处。我会在控制器中检查缓存是否存在,如果存在,则将其分配给视图变量,并将一些标志$this->view->hasCachedPosts=true。然后在视图中呈现缓存的响应。如果缓存丢失,请加载所需的数据。另外,不要忘记在模型更新/删除/插入方法中插入缓存清理

如果你每分钟有很多变化,那么即使是30秒的缓存也会有所帮助。而且,如果您的受众较少,则缓存应该持续更长的时间


内容更改越多,需要缓存的部分就越小,这样大块内容就不会定期失效

您可以缓存这两个。你不需要将自己限制在一个前端。我的意思是:如果我缓存输出..我还在我的控制器中查询数据库吗?我想你是的。这是因为您的缓存通常不会永远离开,并且可能会因过期而重置,或者是因为您在其他操作中手动重置它们。@如果我缓存数据库记录集$post,并且缓存仍然有效,无论何时加载页面,我都会保存服务器用于查询数据库的资源。与缓存视图中的输出相比,这节省了大量资源。这是否正确?是的,当然可以通过缓存数据库查询来节省时间。在缓存输出时,它是否会更多取决于您的情况。最好检查一下。你可以使用microtimetrue函数测量执行时间来确定这一点。为什么过早?你的意思是什么?我的实际情况是这样的,每次更新后我似乎都必须清除两个缓存。我只是想知道这是否是一个常规,就像我写的那样-它高度依赖于你的场景。我会选择每输出后缓存。请参阅更新。
echo $this->post->title;
echo $this->post->text;