通过最小化提升wordpress速度

2017/12/27

每个人都希望他们的网页加载速度快,因为这使访客和搜索引擎感到高兴 。WordPress本身是轻量级的,并且为速度进行了优化,但是当插件和主题发挥作用时,性能会受到很大的影响。

正如我在前面的文章中指出的那样,加速WordPress首先是开发者的责任。问题是,如果在单个页面上加载了大量的插件,那么简单地通过优化代码来加速WordPress站点几乎是不可能的。

影响页面加载时间最重要的因素之一是HTTP请求。HTTP请求的数量,从服务器获取响应的时间以及响应的大小都会导致网站的性能下降。

速度

WordPress最小化会提升网站速度

大多数网站管理员会做第一件事就是为了提高网页加载时间,需要减少JavaScript和CSS文件的HTTP请求的数量,这是因为它们是导致wordpress网站缓慢的罪魁祸首。

为此,可以使用称为“最小化”的方法,其需要两个步骤完成:

步骤1:缩小文件内容

缩小是从源代码中删除所有不必要的字符而不改变其功能的过程。这些不必要的字符通常包括空白字符,新行字符,注释,有时还使用块分隔符,用于增加代码的可读性,但不需要执行。

第2步:合并缩小文件(连接)。这是将多个文件合并成一个文件的过程,只需要一个HTTP请求即可提供。

WordPress用户经常使用即时缩小解决方案,因为它提供了最动态的方法:插件或主题可以随时激活/取消激活,缩小内容自动更新。出于这个原因,在这篇文章中的缩小被理解为即时缩小。

一旦JavaScript和CSS文件被缩小,您的网站应该在PageSpeed / YSlow或类似工具中排名更好。但是,这并不总能保证更好的页面加载时间,因为您仍然有响应时间和响应大小要考虑。较少数量的HTTP请求包含较重的请求有时会降低您的网站的性能,而不是帮助。

许多用户激活一个minify插件,并期望它只是工作。这在许多层面上都是错误的。

Minifying就像是驾驶一辆F1赛车,速度非常快但同时又是危险的。如果您的网站有超过40个Javascript文件或大量的每访问者,则必须使用一个即时的缩小解决方案(例如由BWP Minify提供的解决方案),并且要承担很大的功效。

有问题的文件

并不是所有的文件都可以被缩小,也就是说,缩小时它们只是简单的中断 有些是可以微型化的,但是一旦与其他文件结合就会中断。

这是Javascript功能根本不起作用的主要原因之一,或者在缩小处于活动状态时,您的网站显得杂乱无章。要解决这个问题,你需要确定哪些文件正在造成麻烦。

可以通过在缩小列表中逐一排除文件来检测有问题的文件。如果您正在使用BWP Minify,请导航至BWP Minify>管理排队文件,并尝试排除(即忽略)文件。建议您一次忽略3-5个文件,以使此过程更快一点。

预缩小文件

已经缩小的文件不应再次缩小,以节省处理时间,进而缩短服务器响应时间。典型的例子是由WordPress内部入列的文件,例如jqueryjquery-migrate

如果您正在使用BWP缩减大小,还有一招没有再压缩,精缩前的文件,但仍然将它们组合起来:简单地说“ 最小化 ”的文件的名称,如my.file.min.jsmy-file-min.js。请注意,这适用于Javascript和CSS文件。

对于您无法控制的文件名,您必须再次导航到BWP Minify>管理入队文件,并完全忽略它们。请注意,忽略的文件由WordPress处理,现在不会与其他文件结合。

少即是多

WordPress的缩小是通过PHP来完成的,这意味着你的服务器在返回一些合理的东西之前必须把请求传递给PHP。对于静态资源,如Javascript和CSS文件,如果没有缓存,可以显着增加页面加载时间。

即时缩小意味着缩小脚本必须在每次请求时定位,缩小和合并每个入列的文件。出于这个原因,初始负载(大部分没有高速缓存)在处理时间内可能高达9-12秒,甚至更高。这就像在电脑上打开几个文件,然后试图一次性用所有打开的文件中的空格替换掉所有的换行符(你知道这有多慢)。

一个简单的解决方案是减少一次合并的文件数量。因此,不要在一个请求中缩小40个文件,而应该有四个请求,每个请求包含10个文件。这使用浏览器的并行下载功能,如使用下载管理器。同时下载的4个较小的请求比一个可能导致超时的繁重请求要好得多。

缓存过期头

没有缓存过期标题的缩小就像(再次)驾驶没有刹车的赛车。

为了最大限度地发挥作用,您将需要Cache-Control标题或Expires标题。在正确设置这些标题的情况下,仅当缓存的内容已经过期时才需要用于缩小内容的HTTP请求。

强烈建议将缓存过期标题的值设置为远期日期,尤其是在实时环境中。只是使用就足够了Cache-Control,但使用两者都是安全的。请注意,Cache-Control在现代浏览器中将优先。

您可以通过PHP 1或通过服务器配置文件(例如apache 2,nginx 3)添加缓存过期标题。如果您使用BWP Minify,则会自动为您添加缓存过期标头。

动态变为静态

而不是直接通过PHP提供缩小的内容,让服务器完成这项工作。这听起来很简单明显,但是如何保持插件/主题的动态性?

答案是正常生成缩小的内容,但将其缓存在某处,然后将其公开访问以供将来的所有请求使用。仅当缓存无效(未找到或过期)或发出强制请求时才需要PHP。

这种方法不仅消除了每次往返PHP的需求,而且还允许您使用精美的名称来缩小内容,minify-javascript.js以使CDN更喜欢。

最好的放置WordPress的内容地方是在wp-content里面。如果你使用一个缓存插件,可能已经有一个cache目录,可以利用。

大多数缩小插件提供了这个功能。

使用不同的缓存机制

当你第一次听说缓存的时候,最可能提出的机制就是文件缓存,在缓存中缓存内容,把它们作为文件存储在磁盘上。如果您的网站每天访问量相当高,那么这种缓存机制可能效率低下(毕竟是磁盘I / O,速度很慢)。

使用内存缓存机制来存储和提供缓存的内容会更好。只要把你的服务器当成普通的PC就可以了,当你从内存而不是磁盘读取数据时,你的软件显然会运行得更快。

使用内存缓存服务缩小内容的方法有很多种。如果Minify是您正在使用的PHP库,则可以自定义其配置文件以使用特定的PHP加速器,如APC或XCache。在修改配置文件之前,您当然必须在服务器上正确配置所需的加速器。

如果您是内存缓存的新手,APC的文档可能是一个好的开始。

定期访问减轻初始负载

无论您采取什么方式来缩小内容,初始负载仍然是一个问题。当缓存无效时,任何访问您的网站的访问者肯定会注意到页面加载时间的减慢。为了拯救那个可怜的灵魂,你需要找到别的东西来承担这样的负担。

我们的想法是使用cron作业定期访问您网站上的一些独特页面,强制刷新和缓存缩小的内容,这样当访问者付费访问时,它就是他/她所看到的缓存版本。您的网站的主页,帖子,页面或任何其他特殊的可以被认为是独一无二的。

您可以使用真正的cron作业或WordPress模拟的作业。cron作业的频率取决于缩短的内容更新的频率,例如每天或每周。

如果你想在每次激活/关闭插件的时候刷新缩小的内容,每次upgrader_process_complete使用add_action都要调用你的刷新函数。

结论

“拥有权利的同时也被赋予了重大的责任”。要充分享受Minify的好处,您需要了解常见的陷阱,并确保尽可能遵循最佳做法。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注