CDN,全称 Content Delivery Networks,即内容分发网络。其原理很简单,即用户访问时内容不是从原始服务器上获得的,而是从 CDN 智能解析的服务器上获取的,内容是缓存到 CDN 服务器上的。通常 CDN 服务商会有多个机房,而智能解析总是到访问最快的机房,所以通过 CDN 能显著地加快访问速度。另外还有一个好处是 CDN 加速可以减轻服务器的流量压力。
但是 CDN 也不是没有缺点,对于动态网页,由于有缓存,所以会造成延迟,很可能获取的的页面不是最新的,或者一些带有 query 的页面无法执行。
但是对于静态内容效果还是十分显著的。对于 WordPress 来说,最大的静态内容的来源就是上传文件夹了。
由于 CDN 实现的是域名级别的加速,所以我们得让上传文件夹单独使用一个域名。虚拟主机一般支持子域名,我们只要添加一个子域名就行了 (比如我添加的就是 uploads.tsukkomi.org) 。有的虚拟主机可以选择子域名对应的文件夹,这样只要指向 WordPress 目录下的 wp-content/uploads 目录就行了;有的虚拟主机不能选择子目录,而是默认在站点的根目录下面的同名文件夹 (比如我的就是根目录下的 uploads 文件夹),这种情况就需要把 wp-content/uploads 目录移动到根目录下。至于 VPS 等独立服务器的,只要配置 httpd 的设置就行了,相信玩 VPS 的都会配置的,就不祥说了。
如果不能选择子域名对应的目录的情况,由于上传目录被移动了,我们还要修改 WordPress 的上传目录。进入 WordPress 的后台控制版,左边的“ 设置” 下的“ 媒体” 选项中的“ 默认上传路径”,改成相对于 WordPress 目录的路径。比如我的 WordPress 直接放到站点根目录下,子域名对应的 uploads 目录也在站点根目录下,那么直接改为“uploads” 就行了。如果子域名对应的目录在 WordPress 的上一级目录下,就需要改为“../uploads”(“../” 表示向上一层目录) 。
由于我们要让上传目录使用独立域名,所以同样在媒体选项下的“ 文件的完整 URL 地址” 也得修改,否则 WordPress 还是使用相对于原域名的地址。把完整的域名 URL 填进去就行了 (注意最后不要加“/”),比如我的就是“http://uploads.tsukkomi.org” 。
还有一个问题—— 原来发布的日志使用的是老地址,无法获得加速效果,而且如果上传目录移动了的话还会使原来的文件无法访问,得改成新地址才行,但是一篇一篇日志地改实在太麻烦。如果会使用 SQL 修改的可以直接登入 phpMyAdmin 之类的工具用 SQL 命令修改,如果不会使用 SQL 或者没有办法使用 SQL 修改的话,只有通过插件了。 Search & Replace,就是我们要使用的插件。
下载安装好并启用 Search & Replace 后,在 WordPress 控制版的“ 工具” 下会出现“Search & Replace” 选项。进去之后可以看到有两部分,上面的是“Information Search & Replace”,用来检索数据库里的信息;下面是“Search In”,用来替换信息。
首先我们先用上面来搜索一下,勾选“All – only search!” 后面的复选框,在“Search for” 后面填入我们要搜索的内容,这里我们要搜索的是原来的地址,我的就是“http://tsukkomi.org/wp-content/uploads”(注意最后没有“/”) 。点“Go” 按钮开始搜索。搜索结果会显示在最上面,有兴趣的可以分析一下,如果结果为 0,就要看看是不是什么地方填错了。
然后我们就要替换了。要替换的内容主要是两部分—— 一部分是日志中的地址,还有一部分是上传的文件的 GUID 。所以在下面的“Search In” 部分中,我们要勾选第一个“Content” 和第二个“GUID”,然后在最下面的“Search for” 里填上刚刚在上面搜索的原地址,然后在“Replace with” 里填上我们在“ 文件完整 URL 地址” 里设置的地址 (最后没有“/”) 。然后点“Go”,等替换完之后会在上面显示替换的数量。要替换的就这些,如果在其他地方也出现了原地址而没有替换,理论上是没有影响的,但如果你看着不顺眼可以全部替换了。
CDN 服务有很多,但是我们今天要设置的是方便好用还免费的 CloudFlare(http://www.cloudflare.com) 。注册就不说了,大家应该是轻车熟路了。
在 My Websites 页面下,有一大大的输入框,输入域名 (因为 CloudFlare 要接管 DNS,所以要输入你注册的域名,而不仅仅是需要加速的子域名。就算你输入的是子域名,导入的也是注册的域名),点那个大大的“Add this website” 绿色按钮就行了。
然后 CloudFlare 会扫描你的域名 DNS 设置,扫描完后点“Continue to Step 2” 继续。