是通过核心缓存机制缓存视图,还是应该在每个视图中直接设置缓存?


23

我看到每个视图中都有缓存设置。我是否需要设置这些,或者/ admin / config / development / performance中的核心缓存机制是否会自动执行其中的某些操作,而视图中的这些“额外设置”是否要覆盖drupal核心的默认缓存行为?

在此处输入图片说明


我对这个确切的问题感到好奇。Views特定的缓存设置是否会覆盖Drupal Core性能缓存设置?从逻辑上讲,我认为会是这种情况,但这不一定是假设。
David Csonka'3

我为此开始了赏金计划,因为我真的很想更好地理解这一点。
David Csonka'3

Answers:


38

内容:核心性能缓存使用URL的缓存ID存储并提供整个呈现的页面。视图缓存超出了此范围,仅缓存视图输出。

原因:对于已登录的用户来说非常有用;页面上的其他块可能更动态,但是视图不必每次都为每个用户运行查询……只是偶尔在缓存生存期到期时生成页面缓存的用户。

设置:对于诸如将内容标记为新内容之类的事情,允许“渲染输出”比查询更新鲜是有用的,否则只需将它们匹配即可。

大图: Drupal使用服务器在PHP中构建页面并访问数据库(或内存中的缓存)来动态地提供页面。这可以提供出色的功能和内容编辑器的速度...但是要权衡需要了解缓存并正确进行。

模块!

还有一个可爱的Views Content Cache模块,可在内容编辑时清除视图缓存。如果您想走得更远,您可能还需要查看“ 缓存操作 ”,我建议您使用“规则”对此进行调整。

另外,Blockcache Alter允许您为站点上的每个块设置“每个角色”,页面,用户等的缓存选项。

您还可以添加页面管理器面板。这使您可以做一些有趣的事情,例如将缓存设置为“每个用户”,“每个角色”或许多其他非常有用的配置。虽然我个人避免使用面板。

文档:有关缓存和性能的一般信息,请访问Drupal.org页面


这个答案真的很好。投票赞成。我在“页面管理器”和“面板”上添加了一个部分,现在答案可能大部分已经完成。
Letharion 2012年

是否需要启用核心性能“块缓存”才能使Views特定的缓存正常工作?
David Csonka,2012年

感谢您添加有关页面管理器/面板的信息-因为在为此添加赏金之后,我意识到我也对Mini-panels缓存感到好奇。我在想,是否要启用核心性能“块缓存”或为了使微型面板“简单缓存”有效而需要启用它。
David Csonka,2012年

1
块缓存确实会缓存块输出,而不管您的视图缓存设置如何……与页面缓存一样。如果您有12个小时的页面高速缓存注销时间,则视图高速缓存无关紧要,因为这些页面不会再次呈现,它们只是从高速缓存中获取。
doublejosh 2012年

1
反之,如果启用核心块缓存,Drupal将在整个站点的所有块上施加相同的缓存条件,对吗?由于核心Drupal块缓存比“视图块”缓存设置具有更高的优先级?如果您没有可能需要一致刷新的内容,那似乎只是一个好方案。
David Csonka,2012年

4

Views使用了Drupal缓存API,但是它创建了自己的与正常Drupal页面/块缓存不相关的缓存。

视图缓存视图定义本身以及渲染的视图本身。可以通过两种方式缓存呈现的视图,即查询结果或视图的实际HTML。通常,您要缓存输出的HTML,因为这是最有效的性能。在某些情况下,您想根据已登录的用户更改输出,缓存查询也可能非常有效。

Views用于存储缓存的表为:

  • cache_views
  • cache_views_data

因此,我可以在admin / config / development / performance上禁用Drupal Core Block缓存设置,但可以单独启用特定的Views显示块缓存,并且仍然使这些Views块缓存正常工作吗?
David Csonka,2012年

1
@DavidCsonka是的,您可以这样做。缓存块比缓存视图更有效,但是只有很少的余量。
googletorp

啊,很高兴知道。但是,仅使用Views缓存设置将使我可以更精确地控制Views块的缓存方式,对吗?如果我改用Core Block Caching,那么它基本上在我站点的每个块上设置了一组缓存设置吗?正确?
David Csonka,2012年

1
视图缓存(块或页面)使您可以控制结果列表集的缓存。块缓存大约是整个块的输出。是的,核心块缓存是站点范围的设置,但是您可以使用“块缓存更改”对每个块进行非常细微的更改。
doublejosh 2012年

3
@doublejosh在Drupal 7中,您可以定义块缓存应如何工作,在站点范围,每个角色,每个页面,每个页面用户都是我相信的选项。由于它是在较高级别进行缓存,因此其性能更有效。
googletorp

3

现在有一个有趣的模块,称为“ 视图缓存小工具”,可以自动缓存所有视图(查询结果和输出),但具有公开形式的视图除外。该模块还允许您从其缓存中手动排除视图。这样就可以为中心视图的所有视图(排除的视图除外)设置缓存。


2

Drupal 7提供页面缓存,但是页面缓存仅适用于匿名用户,不缓存视图

但是视图缓存适用于匿名用户和登录用户

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.