为WordPress启用CDN加速

已为老胡 2011-06-18 AM 993℃ 1条

        CDN,全称Content Delivery Networks,即内容分发网络。其原理很简单,即用户访问时内容不是从原始服务器上获得的,而是从CDN智能解析的服务器上获取的,内容是缓存到CDN服务器上的。通常CDN服务商会有多个机房,而智能解析总是到访问最快的机房,所以通过CDN能显著地加快访问速度。另外还有一个好处是CDN加速可以减轻服务器的流量压力。

        但是CDN也不是没有缺点,对于动态网页,由于有缓存,所以会造成延迟,很可能获取的的页面不是最新的,或者一些带有query的页面无法执行。

        但是对于静态内容效果还是十分显著的。对于WordPress来说,最大的静态内容的来源就是上传文件夹了。

        由于CDN实现的是域名级别的加速,所以我们得让上传文件夹单独使用一个域名。虚拟主机一般支持子域名,我们只要添加一个子域名就行了(比如我添加的就是uploads.tsukkomi.org)。有的虚拟主机可以选择子域名对应的文件夹,这样只要指向WordPress目录下的usr/uploads目录就行了;有的虚拟主机不能选择子目录,而是默认在站点的根目录下面的同名文件夹(比如我的就是根目录下的uploads文件夹),这种情况就需要把usr/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/usr/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”继续。

 

        然后就是你的域名的DNS设置了,这一步和其他DNS服务设置没有任何区别。因为扫描得可能不完全,所以这里要检查一下,可以添加修改(添加时使用最下面的输入框,下图红框处,记得点右边的“Save”)。当然不要忘了把我们的uploads子域名添加进去(可以添加A记录指向服务器IP,也可以添加CNAME记录指向主域名,我的就是添加了CNAME然后指向tsukkomi.org)。检查无误之后点“I‘m done checking my DNS records, continue”。

 

        然后下一个页面就是加速设置了。因为只有A记录和CNAME记录可以启用加速,所以会列在前面。CloudFlare会自动添加一个A记录direct,给你作FTP、SSH等直接访问之用,由于我们不对主域名加速,主域名也就是直接访问了,可以删掉(如果你对主域名也加速,建议保留)。每个记录后面都有一朵云(CloudFlare的logo),橙色表示启用CDN,灰色表示关闭CDN。点一下这朵云之后会出现选项让你选择启用或是关闭。因为我们只需要加速uploads子域名,因此只要让uploads后面的云是橙色的就行了(如果你有其他加速需要可以自己设置)。设置好之后点“My settings look good, continue”。

 

        最后一步,需要到域名注册商那里修改DNS设置,把域名服务器改为CloudFlare提供的地址。点击“I’ve updated my name servers, continue”就结束了。然后我们只要等待域名设置生效就行了。

 

        域名添加后,我们可以在My Websites页面管理域名。右边有CloudFlare Apps(一些站点工具)、Reports & stats(报告与统计)和Settings(设置)。设置下有DNS settings(修改DNS记录以及加速设置)、CloudFlare settings(一些参数设置)和Deactive(禁用这个域名,注意这会使得DNS失效)。

 

        CloudFlare的服务器也是放置在国外的,所以加速效果因人而异,但是对绝大多数人来说都是有效果的。如果你的网站本来就已经很快了,也可以使用CDN来减轻流量压力。总之,究竟要不要使用,自己好好决定吧!

非特殊说明,本博所有文章均为博主原创。

评论啦~