复杂的ExpressionEngine模板:可以渲染< = 1秒?

时间:2012-05-03 17:42:02

标签: php mysql lamp expressionengine

我已经根据我的知识优化了复杂的ExpressionEngine模板,我仍然希望将渲染时间缩短到1秒,无论是需要进行应用程序级调整还是服务器级调整。

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

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

应用级缓存后

:2.0793秒,28.37MB,476次查询

下降很大程度上是EE的模板缓存,标记缓存和每个EE Wiki Optimization article的频道“禁用”参数的结果。

这一切都发生在具有512MB内存的MediaTemple DV4(LAMP)服务器上,我想这将以此速率销毁。生产网站流量为每天4K浏览量。

到目前为止,我唯一的想法是只加载特色项目并异步保存(较大的,最初隐藏的)大量内容。我不喜欢这个想法的唯一原因是潜在的搜索引擎优化。每个项目都有一个详细信息页面,因此它可能不是一个问题,但似乎这是索引所有有用的信息。

在不破解ExpressionEngine的核心的情况下,有没有什么安全的方法可以将我的最小页面渲染时间减少到不到一秒钟?我只是让自己失败了吗?

2 个答案:

答案 0 :(得分:1)

这是异步加载擅长的...如果你担心SEO的含义,添加一些分页链接,然后在初始化你的AJAX时隐藏那些用javascript。超过5k的未查询查询,恕我直言,完全不能接受。每天有4k的浏览量,有些人会受到那个缓存破解的综合浏览量的打击,而且它不会很漂亮!

无论如何......

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

如果您愿意购买附加内容以获得帮助,我会高度推荐CE Cache。它将取代所有的本机缓存,只需为您挖掘整个数据并将其作为文件缓存,在数据库中,或通过一系列其他流行的服务器级缓存机制。

祝你好运。 :)

答案 1 :(得分:0)

使用AJAX按需加载以及积极缓存的好建议。

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

还有一些想法:

  • 删除所有高级条件(使用Mark Croxton的If / Else和Switchee代替)
  • 使用查询模块或Solpace的超级搜索而不是频道条目,然后通过Playa模块标签调用Playa
  • 删除任何嵌入物;使用Snippets或无需改为
  • 删除模板的各个部分,看看是否有特别查询密集的
祝你好运!