1

据我所知,我已经优化了一个复杂的 ExpressionEngine 模板,无论我需要进行应用程序级别的调整还是服务器级别的调整,我仍然希望将渲染时间控制在 1 秒以下。

有问题的页面是 195 个项目的网格,每个项目都有几个实际显示和可过滤的一对多关系(客户、供应商、办公室等)。这些关系由 Playa 维护。

未缓存:16.0904 秒,50.11MB,5264 次查询

应用级缓存后:2.0793 秒,28.37MB,476 次查询

下降主要是由于 EE 的模板缓存、标签缓存和根据这篇EE Wiki 优化文章的通道“禁用”参数。

这一切都发生在具有 512MB 内存的 MediaTemple DV4 (LAMP) 服务器上,我想它会以这种速度被破坏。生产网站流量约为每天 4K 的综合浏览量。

到目前为止,我唯一的想法是仅加载特色项目并异步保存(较大的,最初隐藏的)内容块。我不喜欢这个想法的唯一原因是对 SEO 的潜在影响。每个项目都有一个详细信息页面,所以这可能不是问题,但似乎这些都是索引的有用信息。

是否有任何安全的方法,无需破解 ExpressionEngine 的核心,将我的最小页面渲染时间降低到不到一秒?我只是让自己失败了吗?

4

2 回答 2

1

这就是异步加载擅长的……如果您担心 SEO 的影响,请添加一些分页链接,然后在初始化 AJAX 内容时使用 javascript 隐藏这些链接。恕我直言,超过 5k 的未缓存查询是完全不可接受的。每天有 4k 的浏览量,有些人会被缓存破坏的页面浏览量击中,而且它不会很漂亮!

不管 ...

我的猜测是缓存后剩下的大部分查询都来自 Playa。它提出了很多查询。将缓存刷新参数直接添加到 Playa 标签对将进一步帮助您。

如果您愿意购买附加组件来提供帮助,我强烈推荐CE Cache。它将取代您所有的本地缓存,只需为您收集全部内容并将其缓存为文件,在数据库中,或通过一系列其他流行的服务器级缓存机制。

祝你好运。:)

于 2012-05-03T20:40:17.037 回答
0

AJAX 按需加载和积极缓存的好建议。

如果可能,请在此处或 EE 论坛中发布您的模板代码,也许可以简化。

还有一些想法:

  • 删除任何高级条件(改用 Mark Croxton 的 If/Else 和 Switchee)
  • 使用查询模块或 Solpace 的超级搜索而不是频道条目,然后通过 Playa 模块标签调用 Playa
  • 删除任何嵌入;改用 Snippets 或什么都不用
  • remove sections of the template and see if any are particularly query-intensive

Good luck!

于 2012-05-04T01:24:40.787 回答