是否有比覆盖模板文件更有效的替代方法?


8

我必须消除视图中的许多不必要的标记。通常,我可以通过覆盖主题中的模板文件来完成此操作,但是这次视图的确很大,性能下降了。所以我想知道,是否有一种更有效的方法来减少标记?更改节点的标记时,预处理功能比覆盖模板文件要快,那么是否有用于视图的类比机制?

编辑1:当然,性能低下的原因并不是首先覆盖了模板文件,但是如果我可以在那里进行一些优化,则必须这样做。另外,我经常在视图UI本身中禁用标记而遇到麻烦:例如,当我使用Omega子主题时,忽略禁用行样式……

编辑2:我知道Views UI 内的可能性;我正在寻找的是一种具有精细控制的手动方式。


3
是什么让您认为覆盖模板文件导致性能下降?没有说不是必须的,但是感觉不太可能。除非您不仅要剥离标记,还要更改逻辑。也许您可以编辑问题并提供更多背景信息?有关视图和模板文件的一些更具体的细节?
克莱夫(Clive)

在上面添加了一些细节。
亚当夫人,2016年

即使打开了缓存也会降低性能?(视图缓存+ Anon页面缓存+ Memcache(可能)+ Varnish(可能))
Beebee

Answers:


8

您可以通过Views UI消除不必要的标记。

当您添加一个隐藏在“样式设置”下的字段时,它们始终具有此默认的不必要的复选标记

在此处输入图片说明

另外,您可以在此处删除更多标记

在此处输入图片说明

和这里

在此处输入图片说明


感谢您的回答,但我知道ui视图中的可能性;我正在寻找的是一种具有精细控制的手动方式。
亚当夫人

7

有时更高性能与视图中显示的内容,而不是领域。最好使用自定义视图模式,在该视图中,您可以配置视图模式以显示所需的字段。然后,您可以通过模板和格式化程序随意显示该查看模式。当您拥有Entitycache时,这通常会很好地工作。

也就是说,所有系统都是不同的。真正的剖析确实是弄清楚耗时的最佳方法。就个人而言,我认为视图标记不会增加执行时间


有趣的方法–我将对此进行介绍。
亚当夫人,2016年

7

性能低下的原因不是一开始就覆盖了模板文件,但是如果我可以在那里进行一些优化,则必须这样做

听起来好像鼓励您过早优化。如果视图遇到性能问题,请确保在视图上启用了缓存,以避免尽可能多地从头渲染HTML。与几乎不减少渲染过程中涉及的文件数量相比,这将大大提高性能。

一旦构建了主题注册表,就不会因为使用默认设置而导致大量覆盖模板对性能产生明显的影响,因为Drupal仍在加载相似数量的文件(如果您为每种可能的情况创建一个文件,我都将看到例外)覆盖整个链,因此请不要这样做)。

如果切换到实体显示而不是字段显示,可以减少加载的模板数量,从而在渲染速度上获得较小的改进。假定实体显示还采取了一些步骤来避免字段级模板和/或可能已经缓存在其他位置。机器性能几乎没有提高,这可能是很多昂贵的人工。


2
好的,现在整个机制对我来说更加清楚了。最重要的是,这里的评论和答案倾向于说避免模板覆盖以提高性能是错误的和不成比例的努力。谢谢!
亚当夫人
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.