Zend_Cache_Frontend_Capture和Zend_Cache-Frontend_Page之间的区别是什么



有人能解释一下这两个前端之间的区别吗Zend_Cache_Frontend_Capture和Zend_Cache-Frontend_Page?

Capture是页面缓存的默认选项。。。奇怪的是,它使用get变量生成id,但没有像中那样设置makeidwithgetvariables的选项页面前端。。。。

有人能解释一下吗?

以下是我努力解释两者之间的区别。

首先,让我们看看Zend_Cache_Frontend_Capture。该引用指出,该类被设计为仅与Zend_Cache_Backend_Static一起使用。

您可以使用Zend_Cache_Frontend_Capture来缓存与访问网站的用户无关的整个页面。当你有与当前用户无关的静态数据(可能会不时更改)时,你可以使用这个前端,也就是说,它对所有用户都是一样的(例如RSS提要或动态创建的JavaScript文件)

进一步查看Zend_Cache_Backend_Static,您会发现这个后端有点特别。它需要.htaccess文件中的规则来帮助提供缓存。一旦用Frontend_Capture/Backend_Static缓存了一些东西,就不会使用PHP和Zend Framework来提供缓存的数据。Apache发现缓存文件基于.htaccess存在,并在不调用PHP的情况下直接向用户提供内容。

CCD_ 5的工作原理不同。使用它,您不仅可以根据请求URI缓存内容,还可以根据cookie、会话、GET或POST参数中的信息缓存内容。默认情况下,基于cookie、session、get和post的缓存被禁用,因此,为了对登录到您网站的用户产生任何影响,您必须告诉缓存是否有任何页面要基于该信息进行缓存。

一旦我创建了一个缓存并告诉它我想基于cookie和会话进行缓存,我现在就可以缓存一个特定于一个用户的动态生成的页面。因此,如果人员A访问/accounts/,则可以为该特定用户缓存页面,该页面包含从数据库中提取的他们的帐户列表。现在,当人B访问/accounts/时,他们看不到人A的缓存,所以页面现在是为他们单独缓存的,每个用户的信息都在他们自己的缓存中。

总计:

  • 当您有可以缓存的数据时,请使用捕获前端,这些数据对所有用户都是相同的。这将是一个更高性能的缓存,因为缓存页面后就不需要PHP和ZF了。缺点是必须向.htaccess 添加缓存规则

  • 如果您希望缓存具有动态输出的页面,不仅基于请求URI,还基于cookie、会话数据或获取/发布参数,请使用页面前端。

希望这是清楚的,并帮助你理解差异。

编辑:我相信我看到了问题所在,但不确定这是否被归类为bug。

Zend_Controller_Action_Helper_Cache::preDispatch()基于请求URI(包括查询字符串)生成高速缓存ID。由于jQuery ticker会在URL中附加一个查询字符串,因此您将为每个请求URI缓存一个提要副本。(在前面提到的类方法中查找$reqUri)。

我看到了几个选项:1)看看你是否可以让ticker不附加查询字符串(至少对于特定的URL)或2)手动启动Capture缓存并传递你自己的ID,而不是让缓存助手根据请求URI生成它。

相关内容

  • 没有找到相关文章

最新更新