如果你基于WordPress的个人博客或网站打开页面的速度很慢,并非只有你才这样。你其实可以采取更积极主动的办法来解决这个问题,比如优化底层的网站服务器堆栈(比如PageSpeed),调整改动内容(比如缩减内容),或者甚至换成一种不同的发布平台(比如Ghost或Jekyll),而不是仅仅哀叹网站主机托管服务多差劲。
所有这些面向服务器的优化也许不是最佳解决办法,因为你的博客或网站仍通过单单一台物理服务器来服务访客,这台服务器很容易成为瓶颈。除此之外,要是你选择共享托管方案,其中一些优化措施就行不通:不像在虚拟专用服务器(VPS)或专用服务器上,你对网站服务器堆栈毫无控制权可言。
一种更有效、更广泛适用的解决办法可以加快WordPress打开页面的速度,那就是借助内容分发网络(CDN)。典型的CDN由为了尽量靠近最终用户提供内容而部署的一批遍布全球各地的缓存服务器(所谓的“边缘服务器”)来运作。通过将你网站的内容复制到遍布全球的CDN,你让最终用户可以从地理位置邻近的缓存服务器获取内容,而不是从那些可能拥堵、遥远的源服务器获取内容。
幸好,将WordPress整合到第三方CDN中比较容易,这归功于现在有一些与CDN兼容的缓存插件。这些插件的功能就是,将WordPress URL自动转换成CDN托管的URL,因而将内容服务这项任务卸载到CDN。无论你选择共享托管方案、VPS还是专用服务器,都可以运用这个方法。我在本教程中将演示如何使用“W3 Total Cache”插件为WordPress提速。我选择亚马逊CloudFront作为后端CDN。
亚马逊CloudFront CDN
亚马逊CloudFront是广泛使用的商用CND之一,触角伸及全球各地。CloudFront的CDN声称为其遍布美国、欧洲、南美、亚洲和澳大利亚的众多边缘服务器设有的存在点(point of presence)超过35个。根据这种视每GB收费的按需定价模式,谁都可以轻松选用CDN服务,既没有任何前期费用,也没有长期投入。
我在本文剩余部分将逐步介绍如何将WordPress网站整合到亚马逊CloudFront中。
第一步:为AWS创建安全凭据
由于CloudFront是亚马逊网络服务(AWS)的一部分,你就需要创建AWS访问密钥,以便授权W3 Total Cache插件访问你的AWS帐户。参阅这篇指导文章:http://ask.xmodulo.com/create-amazon-aws-access-key.html,即可了解如何创建新的访问密钥ID和密钥。要是你已经有了访问密钥,可以略过这一步。
#p#
第二步:在CloudFront中创建Web分配(Web Distribution)
登录到你的AWS帐户,进入到CloudFront控制台(https://console.aws.amazon.com/cloudfront/)。为你的WordPress网站创建一个新的Web分配。
需要填写的最重要的信息是源设置,尤其是下面两项信息:
- Origin Domain Name(源域名):<your domain name>(比如xmodulo.com)
- Origin ID(源ID):<unique identifier>(比如xmodulo.com)
在源域名这一栏键入你WordPress网站的域名,在源ID这一栏键入任何独特的标识符(比如你的域名)。
如果你想,还可以定制默认缓存行为设置和分配设置。点击“i”图标,即可了解关于每项设置的更多信息。如果你没有把握,那么让这些额外设置仍处于默认值好了。
一旦你点击了“Create Distribution”(创建分配)按钮,新的分配就会保持几分钟的“In Progress”(创建过程中)状态。在这个期间,你的分配将会跨CDN中的所有边缘服务器来配置。点击分配的“ID”,即可了解该分配的更多详细信息。
一旦分配成功配置,你会在配置状态中看到“Deployed”(已部署)。记下你分配的“域名”,下一步要用到该域名。
#p#
第三步:安装及配置W3 Total Cache
下载W3 Total Cache(WTC,https://wordpress.org/plugins/w3-total-cache/)。将该插件安装到你的WordPress网站上,并激活它。
在WTC设置中,进入到“CDN”部分。
点击“Enable”(启用)复选框,选择可用CDN类型当中“Origin Pull”(源获取)下面的“Amazon CloudFront”。保存变更内容。
进入到CDN配置菜单。填入如下所示的三个高亮字段:(1)访问密钥ID,(2)密钥;以及(3)CloudFront主机名称。(1)和(2)与你的AWS安全凭据相关联,你在之前创建CDN分配时必须获得(3)。
一旦你填好了信息,点击“Test CloudFront distribution”(测试CloudFront分配)按钮。如果CloudFront CDN配置正确,你应该会看到“Test passed”(测试已通过)这个信息。核实测试结果后,保存设置。
最后一步是清空所有的WTC缓存,以确保没有之前缓存的数据留下来。
#p#
第四步:验证CDN分发。
为了实际CDN的实际效果,进入到你WordPress网站的任何一个网页,查看页面来源。如果你从页面来源发现你WordPress博客的每个域名都换成了cloudfront.net域,这意味着CloudFront CDN替源服务器分发了资源。
现在你可以从CloudFront控制台,查看各种CloudFront缓存统计数据(比如缓存命中率和CDN传输的总字节等)。
好好享受快若闪电的WordPress吧!
故障排查
1. 你测试CloudFront CDN时,WTC测试未通过,并附有下列信息。
“Error: Unable to list distributions (S3::listDistributions(): [AccessDenied] User: arn:aws:iam::521374068044:user/Alice is not authorized to perform: cloudfront:ListDistributions).” |
这个错误意味着,你为WTC提供的AWS安全凭据并没有全面的CloudFront访问权。进入到AWS安全凭据页面,确保已为拥有凭据的AWS用户授予适当的CloudFront权限。
英文原文链接:http://xmodulo.com/speed-up-wordpress-cloudfront-cdn.html