自 WPML 商业化以来,wpml.org 的流量大幅增加。两周前,我们的服务器负载达到了 95%,响应时间超过 10 秒。使用 W3TC 后,我们的负载回落至 5%,响应时间约为 300ms。
如果您对其不熟悉,W3TC 是一款网站性能优化插件。它包含页面缓存功能,但这仅仅是个开始。除了基本的页面缓存外,它还能压缩 JS 和 CSS 文件、压缩所有内容并运行 CDN(内容分发网络)。综合起来,这些功能可以大幅提升网站速度,使复杂的 WordPress 网站能够应对高并发流量。
为什么这对 WordPress 网站如此重要?
一图胜千言。这是我们的网站在没有任何缓存情况下的加载情况(由 Pingdom Tools 生成):

如果您觉得这很可怕,请记住,实际情况还要更糟。这张加载时间图表是在我们的服务器实际负载为 5% 时截取的。当它真正在没有缓存的情况下运行时,服务器负载高达 95%,处理时间要长得多。首字节耗时 5 秒才输出,而不是您在此图表中看到的 1/2 秒。
为了完整显示我们的主页,我们的服务器必须发送 77 个文件。即使是在服务器负载为 5% 的情况下运行的这张图表,最终也会在 30 秒时超时(见红线)。
这是因为糟糕的编程和设计习惯造成的吗?不是。
WordPress 的强大之处在于其模块化。您可以选择任何喜欢的主题,并搭配任意插件组合。这意味着它们各自独立开发,并使用自己的资源运行。您启用的多数插件都包含几个 CSS 和 Javascript 文件,并会增加 PHP 和 MySQL 的处理负担。您可以手动进行优化,但这样就会失去所有这些出色的模块化特性,一切又将回到原点。
通过 Pingdom 工具或其他页面加载时间测量工具(有一个相关的 Firefox 附加组件)运行您的网站。查看加载了哪些文件及其顺序。您会发现 CSS 文件会加载图像和其他 CSS,并且每个页面都会加载大量的 Javascript 文件。
为了让您先睹为快,以下是我们使用 W3TC 的所有高级功能所取得的成果:

您在这里看到的数字是准确的。显示该页面总共获取了 28 个文件。其中 5 个文件来自 wpml.org(我们自己的服务器),其余的来自 CDN(内容分发网络)。除了检查页面是否在缓存中以及进行一些微小的检查外,PHP 几乎不需要做任何事情来提供此页面。
整个页面在不到 2 秒内加载完毕,并且在服务器上产生的负载几乎无法测量。我们很高兴,访客很高兴,甚至连 Google 也很高兴。
第 1 步)页面缓存
您要做的第一件也是最基本的事情是启用页面缓存。前往 Performance,启用 W3TC 并配置 Page Caching 部分。

对于页面缓存,我们保留了基本设置。我们添加的一项内容是将客户帐户和下载部分从页面缓存中排除,以便 W3TC 不会干扰 WPML 客户帐户和 WPML 下载。
如果您使用的是操作码(opcode)缓存,W3TC 将利用它来进一步加快您的网站速度。我们没有使用它,但如果您正在运行未缓存的复杂 PHP 处理,这是值得的。
第 2 步)压缩——打包并压缩 CSS 和 JavaScript
还记得主题和插件添加的所有那些 CSS 和 JS 文件吗?现在是时候解决它们造成的负载问题了。
压缩功能会收集多个资源文件,将它们打包成一个文件并进行压缩。结果是生成一个较大的文件,而不是几十个小文件。
即使总大小可能只缩小了 50%,但这节省的负载是巨大的。浏览器无需发出多个 HTTP 请求来获取许多小文件,而是发出一个请求并将它们一起获取。这一改变可能是提高网站响应速度的最大功臣——尤其是对于新访客(他们还没有缓存您的 CSS 和 JS)。
单击页面顶部的 Help 按钮。W3TC 将遍历您的整个网站并查找资源文件。然后,它允许您选择要组合的文件。通常,您可以全选,但您需要注意自己的操作,因为这可能会改变加载顺序。
选择了要压缩的 CSS 和 JS 文件后,您需要确保它们的顺序正确。
对于 CSS 文件,在列表中上下拖动文件即可。

您在此列表中看到的顺序应与未启用压缩功能时加载 CSS 文件的顺序相匹配。您可以在 HTML 页面源代码中查看该顺序。
Javascript 文件稍微复杂一些。在这里,加载顺序更为关键,因为错误的顺序会导致 JS 错误和功能损坏。

W3TC 允许您选择哪些 JS 文件进入页眉部分,哪些进入正文部分。例如,Google Analytics 脚本会放在紧靠其前的位置,而 jQuery 则放入页眉,因为它需要首先运行(并且在压缩列表之外)。
第 3 步)内容分发网络(CDN)
对我们来说,锦上添花的是一个功能完备的 CDN。
配置和运行 CDN 超出了本文的范围,因为这需要在第三方服务中设置帐户。
对于我们自己的网站,我们使用 Amazon S3 进行存储,并使用 CloudFront 进行分发。市面上还有其他不错的选项,您可以去探索和比较。
设置好 CDN 帐户后,W3TC 会将您的本地文件发送到 CDN,并将来自您服务器的链接替换为 CDN 中的文件链接。然后,您的服务器只需发送 HTML 文件,剩下的交由 CDN 处理。
虽然您的服务器是一台单机,但 CDN 实际上是一个服务器网络。它将从距离最近的服务器向每位访客发送文件。CDN 提供静态文件的速度比任何单一服务器都要快得多。通过使用 CDN,您可以改善访客的体验,并大幅降低服务器的带宽和网络利用率。

您应遵循 W3TC 中的 CDN 设置向导。它将帮助您将媒体库、主题和插件资源传输到 CDN。
享受网站性能优化的乐趣了吗?请在此处留言告诉我们!


