一文说清楚WordPress页面缓存的重要性


WordPress是基于PHP+MySql开发的,它的易用性和扩展性毋庸置疑。本文将从访问速度来阐述WordPress页面缓存的重要性,这也可以解答部分新手认为WordPress为什么慢的问题,因为默认情况下未使用页面缓存。

浏览器加载WordPress页面的全过程

如果觉得网站速度慢,希望优化的话,只有先搞明白从浏览器发起请求到加载结束会经历哪些过程,以及此过程中的每一个环节占用的时长,这样才能针对问题找到解决方法。

下面用一张图来直观的说明从浏览器发起请求至加载结束的流程图:

浏览器加载WordPress页面的全过程
浏览器加载WordPress页面的全过程

从上图,可以清楚的看到,从浏览器发出访问请求开始计算,直至Web服务器返回数据这个过程叫服务器响应时间(TTFB),而后的静态资源加载则包括HTML脚本、JS、CSS、图片、视频等静态资源或文件。

如果其中任何一个环节的处理速度缓慢,都会导致总加载时间变得更久。(注:还有网络传输速度未在上图中体现。)

具体计算公式:

  1. 服务器响应时间 = 浏览器发送请求的网络延时 + Web服务器处理请求的时间 + PHP 程序执行时间 + MySql数据库执行时间 + Web服务器返回HTML脚本的网络延时。
  2. 静态资源加载 = HTML脚本、JS、CSS、图片、视频等数据的网络传输时间总和。注:静态资源文件只能在服务器返回了HTML脚本后才能开始加载。

启用WordPress页面缓存后带来什么变化

启用了页面缓存后,有两种情况:页面已缓存或尚未缓存,也就是命中缓存或未命中缓存。如果是未命中缓存,则和上图一样的加载流程,如命中缓存,如下图:

浏览器加载已缓存的WordPress页面的全过程
浏览器加载已缓存的WordPress页面的全过程

在命中缓存的情况下,PHP仅处理返回已缓存的HTML任务,并不执行任何其它脚本也无需等待MySql返回数据,这样一来,从浏览器发送请求到Web服务器返回数据的时间大幅缩短,也就是大幅改进TTFB时间。

除此之外,因为不用执行大量的PHP脚本和MySql,对于服务器资源占用也会大幅下降,可承载的访问并发量也将成倍增长(网络带宽允许的情况下)。

还有另外一种更快速的返回已缓存页面的方式:利用Web服务器的转发功能,无需执行PHP,直接返回已缓存的HTML文件。例如:W3 Total Cache 的增强磁盘缓存模式、WP RocketApache启用AllowOverride的情况下或配置Rocket-Nginx的情况下。

这种方式的变化如下:

浏览器加载已缓存的WordPress页面的全过程(无PHP)
浏览器加载已缓存的WordPress页面的全过程(无PHP)

注意,这种方式对IIS服务器的支持不太友好、可查资料较少。

下图将比较启用页面缓存之前和命中缓存后的TTFB时长(在浏览器的开发工具中可查看)。

WordPress未使用页面缓存与命中缓存的速度对比
WordPress未使用页面缓存与命中缓存的速度对比

启用页面缓存带来的好处

使用页面缓存和未使用的速度区别之大,通过上面的对比已经非常明显。在不使用缓存的情况下,一个网页加载时间可能会超过2秒,而且随着网站数据越来越多、或者功能越来越复杂,服务器响应时间会更久。

网页的访问者们,没有人会愿意将时间浪费在等待上。

加载速度还会严重影响SEO的收录和排名情况。

还有一个不容忽视的问题,网站服务器的CPU与内存资源是有限的,不用缓存的话,访问量增大的情况下会严重增加服务器负担,甚至导致资源耗尽而卡死。页面缓存后,这种负担变得轻了很多,在提升服务器硬件配置上可节省不必要的费用。

总结

WordPress的核心程序不带页面缓存功能,需要使用插件来完成,目前比较知名的页面缓存插件有:W3 Total Cache ProWP RocketSwift PerformanceWP Fastest Cache PremiumWP-Optimize Premium 等。

本文已经详细介绍了不使用页面缓存、以及两种返回缓存方式的全流程。那么在选择页面缓存插件的时候,可以从四个方面比较:命中缓存时返回缓存的速度、未命中缓存的处理速度、预缓存机制、脚本及资源优化(延迟加载、预加载、CSS优化等)。

综合而言,按排名先后推荐 WP RocketW3 Total Cache ProWP Fastest Cache Premium

除非注明,否则均为本站原创文章,禁止任何形式转载。

精品WordPress资源下载