即使使用WP缓存,调查复杂主题的速度仍然很慢

时间:2018-07-26 作者:MarsAndBack

当使用一个复杂的WP主题和一个WP缓存插件时,性能改善似乎微乎其微。切换到一个简单的主题,您的站点性能将显著提高。

QUESTION: WP主题是否有后端流程that never get cached 并且在每次页面加载时都会持续运行,即使完全使用了WP缓存插件,您从哪里开始研究这个问题?功能。php?

我正在使用一个付费的WordPress主题,它有许多定制功能,以及它自己的配套页面生成器插件。在主题和配套插件之间,有100个文件需要查看。

我现在回忆起两年前的同样经历,使用另一个付费主题(客户端),一个不同的品牌,还有一个页面生成器配套插件。我经历了可怕的页面加载时间,比如15秒,即使使用已确认的WP缓存。

QUESTION: 是否有一个性能分析器插件可以对主题流程进行详细分析,而不是典型的前端优化(JS、CSS、image等)?我正在使用Debug ThisQuery Monitor 插件,但它们有很长的技术报告菜单;谁知道从哪里开始。

QUESTION: 有谁能确认他们喜欢的页面生成器插件是否能很好地与WP缓存配合使用,如果可以,是什么?

1 个回复
最合适的回答,由SO网友:WebElaine 整理而成

通常,页面生成器主题和插件与缓存兼容。他们仍然倾向于放慢网站速度的原因是因为它们非常资源密集。

在WP中有两个主要资源—数据库中的数据和文件。因为页面生成器几乎可以做任何你能想象到的事情,所以他们必须提供足够的CSS和JavaScript(甚至HTML标记)来支持所有这些无限的可能性。因此,页面生成器将附带成百上千字节的CSS和JavaScript,以便能够在HTML上改进所有这些令人兴奋的布局,而HTML并没有真正针对这些布局进行优化。

复杂的主题也会带来类似的开销。他们可能有巨大的CSS文件和复杂的JavaScript,而且他们经常遭受数据库膨胀的困扰——尤其是如果开发人员刚刚将他们所有的选项都投入到wp_options 数据库表,并让它们都自动加载。选项表越大,整个站点的运行速度就越慢。此外,即使是“不太复杂”的主题(选项更少),也可以通过某种方式进行编码,使其速度变慢。通常,它包含的文件越少,它就越可能是资源密集型主题。如果你能找到一个不必使用CSS框架(如Bootstrap或Foundation)的主题,这将减少额外的开销-它们可以很容易地添加导航栏、行和列等内容,但在一天结束时,如果你找到一个使用CSS网格(和flexbox回退)而不是框架的巧妙编码的主题,仅保存在文件中就有数百KB。

由于页面生成器和复杂主题有大量文件供每个访问者下载,即使你尽可能多地缓存了所有内容,但事实仍然是,它们会迫使每个访问者下载大量资源(CSS和JS),而简单主题的重量要轻得多。想象一下,下载一个动画GIF meme而不是流式播放一段5分钟的Youtube视频——GIF本身就是一个小得多的文件,因此下载速度会更快。

对于高度复杂的主题和页面生成器,另一件事是,他们不仅拥有每个人在每个页面上下载的核心CSS和JS文件,而且通常还拥有条件CSS和JS,只用于特定的布局。当你提到一个有数百个文件的主题时,请记住,即使它们被完美地缓存,访问者仍然需要下载这些文件,无论这些文件中有多少应用于他访问的每个页面。因此,当您使用一个特定的页面模板时,这是一个额外的资源,而且PHP文件可能也有自己的特定CSS和JS,只适用于该模板。这些内容还没有缓存在访问者端-他们已经访问了你的主页,可能还有一篇帖子,现在他们将使用他们的浏览器以前从未遇到过的新CSS和JS访问这些新内容-因此他们无论如何都必须下载这些新资源。

加载速度是一个非常复杂的话题,因为有太多不同的因素-我们甚至没有讨论数据库服务器或文件服务器的响应速度,而您选择的宿主提供程序会极大地影响这些时间,进而影响您进行的每个文件或数据库查询。要开始探索哪些主题和插件集在您自己的特定服务器上工作得最好,我建议将您的站点复制到临时站点上,最好与您的实时站点在同一服务器上,然后尝试一些插件,如查询监视器插件,以查看正在运行的数据库查询以及它们需要多长时间,例如,一些性能插件可以将所有单独的JavaScript文件合并到一个文件中,这有时有助于提高速度,而一些插件检查器类型的插件则试图确定哪些插件是资源最密集的插件。不要在你的主站点上这样做,因为其中一些插件本身是资源密集型的,可能会给你的访问者带来问题。但通过尝试所有这些,然后切换到一个基本主题,例如,看看它对性能的影响有多大,然后一次关闭一个插件,看看它对站点的影响,您可以更好地了解站点的困境,以及如何在没有这些额外资源的情况下编写真正好的自定义体验。

结束

相关推荐

Cache Get_posts

我有一个查询(见下文),它提供了一个由10个新闻项组成的列表,这些新闻项按元值“event\\u date”排序,并经过筛选,以便只显示比今天更早的帖子。处理此查询需要两秒钟,因此我正在寻找一种简单的方法来缓存结果,以加快加载时间。我已经使用了WPEngine,所以我不需要任何缓存插件。提前感谢您的帮助。<?php $today = time();?> <?php $args = array( \'numberposts\' => 10, \'orderb