header image

为WordPress启用CDN加速

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填进去就行了(注意最后不要加/),比如我的就是https://uploads.tsukkomi.org

WordPress媒体设置" width="250" height="73

还有一个问题——原来发布的日志使用的是老地址,无法获得加速效果,而且如果上传目录移动了的话还会使原来的文件无法访问,得改成新地址才行,但是一篇一篇日志地改实在太麻烦。如果会使用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了(请看第2页)。

打赏

微信支付宝

    1. 但是不要忘了,也有比CloudFlare慢的服务器(比如GoDaddy的)。而且对于减轻流量压力还是很有用的。

回复 取消

your email will keep secret. (* required).

你可以使用这些HTML标签和属性:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> .

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据