it-swarm.cn

重量级插件或大量插件会导致网站变慢吗?

我经常听说有很多插件会减慢WordPress网站的速度。这当然是有道理的,因为执行的代码越多,所需的时间就越长。

我想知道缓慢是否主要是:

  • 插件数量庞大的结果? (因为WP必须进行一些处理来定位和加载每个插件)

  • 有一些慢/重插件的结果?

更实际的是,当我自己编写时,我应该将功能组合成更少的文件以获得速度吗?或者可以让10-20个插件各自执行快速任务?

6
allclaws

泛泛而谈

经验法则“许多插件减慢了网站的速度”是一个非常生硬的工具,并且由那些不了解插件如何工作的人延续,因此他们选择了易于妖魔化的东西。

是的插件可以减慢您的网站速度,但它与质量和他们想要完成的内容的数量无关。我可以编写一个插件,它可以让一个网站跪在地上(如果我有理由这么做的话),它会比其他50个写得好的插件更糟糕。当然,人们一直在编写插件,这会让网站瘫痪,因为他们不知道更好。

我想“许多插件减慢网站”的唯一真理是,当你有很多插件时,你很可能会遇到一个糟糕的插件。

细节

让我们来谈谈更具体的内容。插件使用“hooks”,它们是PHP代码的一部分,它们沿着执行路径运行某些点,它们可以执行某些操作或过滤值或两者。 WordPress在编写网页并生成HTML以发送到浏览器的过程中开始调用钩子,并继续调用钩子,直到它完成为给定页面运行。

根据插件使用的钩子,它可能仅在某些页面上调用,在“background”中甚至几乎从不调用。某些挂钩仅在管理控制台中工作。某些挂钩仅适用于管理控制台的某些页面。并且一些钩子由 内部伪造的cron系统 调用。 OTOH,一些插件可以加载额外的CSS或JS文件,并且由于 Web Performance Rule#1 ,每个文件都会降低性能。

如果你想了解每个页面上调用的钩子,可以考虑使用“ Instrument Hooks for WordPress ”插件我写的问题是“ 我在哪里可以找到WordPress Hooks列表? ”这里是插件的屏幕截图使用时在页脚中显示:

Screenshot of Instrument Hooks for WordPress Plugin in action

但只是知道钩子不会帮助您确定插件是否存在问题。你可以调用一个插件100次并且调用它可以忽略不计,相比之下,另一个钩子调用将一个WHERE子句添加到一个SQL查询中,该查询可能会使一个拥有超过几百个帖子的站点陷入困境。或者它可以对另一台服务器进行HTTP调用。或者它可以在每个页面加载时刷新重写规则。罪恶清单还在继续。

确定它的唯一真正方法是通过查看源代码或通过调试器(如 PhpStorm + XDEBUG )更好地运行它来审核插件的钩子。

你自己的插件

不要担心代码的组织方式是出于性能目的;担心你的代码会做什么。 优化频繁运行的SQL查询 buy利用 Transient API (参见: 关于Transient API的演示文稿 )将是 远性能更好 而不是将10个插件的代码合并为一个。

另一方面,请考虑出于其他原因组织代码。我认为 一长串插件可能会给很多用户造成心理困扰 他们看到这样的屏幕,不堪重负,只想简化一些事情:

Long List of Plugins
(来源: mikeschinkel.com

然而另一方面有时用户可能会被淹没,因为一个插件做得太多了。例如,我用 Gd Star Rating Plugin 就是这样的。在对一个项目进行尝试之后(更糟糕的是,尝试将其挂钩以使其完成我需要的工作)我决定将它扔在耳朵上。

因此,有些人(像我一样)通常会喜欢许多小插件,每个插件都做一件事并做得很好(如果WordPress支持分组功能有点像 iPhone iOS 4允许你分组那么会很好文件夹中的应用程序 。)

Long List of Gd Star Rating Options
(来源: mikeschinkel.com

无论如何,希望这会有所帮助。

8
MikeSchinkel

自然插件只是性能故事的一部分,因此您无法通过最终的文件数来衡量它。有更多,你不能提前说什么有用,所以在你的计算机上可能很好的东西不在其他人身上。

您不应该寻找性能,而应该定义其他和自己的标准来做出决策。例如,对于插件,您可以更喜欢将单独的功能放入单独的插件中,以免混淆。在速度或内存使用方面,这可能不是性能方面的,但交易是保持轻微耦合,因此开发和使用插件更容易。不要忘记,当一个新版本的WordPress出现时,只有两个插件可能会突破十个而不是一个大插件。最后,用户只需要十个插件中的三个,因此他需要更少的内存。

如果用户抱怨她/他的博客的性能,通常可以建议他们只能购买更大的服务器并解决性能问题。

(前成熟)优化是万恶之源。在编写插件时,不要再考虑性能了。采取轻松明亮的方式:WordPress最终没有设计性能明智,不要犯错,并尝试为其编写高性能插件;)

WordPress设计有 大球泥 - (反)设计模式 。插件系统是一个与它一起工作的系统。只是不要认为你可以像插件作者那样优化那么多。你不能。不要打架:)

2
hakre

当插件的设计很好时,你可以使用WordPress和数百个插件 - 大多数插件都有错误的代码,这就是WordPress性能的问题。

0
bueltge

它是关于拥有正确的插件。例如,检查您的插件是否将自己的表写入数据库,这通常会使事情变慢。任何加载大量jquery或javascript的东西通常都会减慢它的速度。大量插件并不总是意味着性能下降。确保您使用的缓存插件也有帮助。

我猜你是在问这个因为你正在经历一个减速?询问您的主机是否有什么可以加快速度,并确保您的PHP配置设置正确。

0
rfair404

我通常不会为WordPress安装太多插件,而是尝试使用主要框架来完成主要工作。确实,每个插件都会增加资源消耗。

每个插件都会做一些事情,他们必须初始化,所以他们会在请求你的网站页面时运行一些代码,更不用说管理WordPress面板上的那么多链接使得它更难加载。

也许你不会在每天有2-3k页面浏览量的共享主机上注意到它,但是如果你有一个拥有3k活跃用户的网站,每个网站每天都要求10页,那么它可能会成为一个问题。

0
Lucian

你正在研究两件会减慢你网站速度的事情:1,从文件到服务器的处理,你的php和2,浏览器读取代码的方式。

如果代码是草率的,浏览器会在将代码呈现在屏幕上之前将代码加倍或三倍检查。如果您使用大量数据库和/或服务器请求的插件,这可能需要一些时间,如果它们没有正确制作,可能会与请求发生冲突,这可能会导致额外的时间或更糟,您的网站无法加载和/或错误消息。

rFair404提到了缓存程序,这将有助于服务器请求,有些会压缩HTML代码,这提醒我,我需要压缩一些CSS页面。

0
javajoba

我会说答案是两者


更多插件=更慢

您启用的每个插件都会向页面添加样式表和/或javascript文件,这会大大减慢您的网站速度。

如果每个需要样式表和javascript文件在网站的前端执行某些操作,即使是最好的书面插件也会让您的网站陷入困境。

合并文件

如果您运行wordpress网站,您应该自己学习如何:

  • 正确合并javascript文件
  • 正确合并样式表文件
  • 将javascript调用从标题移动到页脚

如果你运行一个wordpress网站,你不能做上述事情,那么你不应该运行wordpress网站...或者至少你不应该抱怨当你的网站加载更多插件时你的网站减慢。

此外,运行wordpress网站的任何人都应该知道如何:

  • 缩小CSS和javascript文件
  • 打开服务器压缩
  • 确保expires头文件包含脚本和样式表

写得不好的插件=更慢

插件作者真正放慢网站速度的主要方式如下:

  1. 为单个页面加载多个脚本或样式表 - 请参阅上文
  2. 不正确地使用数据库 - 编写不良的查询,查询修改等会对网站产生严重影响。在可能的情况下无法缓存结果也会使事情变得缓慢。大多数人都厌倦了数据库开发和管理。当这些人使用数据库时,问题随之而来。
  3. 不正确地使用wp cron - 每个用户请求上的常量cron作业将使服务器瘫痪。

如果没有编写非常糟糕的代码(半无限循环,大量正则表达式,其中没有必要等等),那么当您考虑wordpress的大小时,大多数事情都不会产生太大影响。增加1%的额外处理时间并不多。


天生慢的任务

无论写得多好,有些事情都很慢:

  1. 使用第三方服务 - 只要您对某个用户的响应依赖于某个第三方的响应,您的网站就会变慢。

当然,如果正确完成(缓存结果,尽可能作为后台进程等),可以使用许多第三方服务而没有太多问题。

0
Privateer