加速你的wordpress打开速度(针对中国大陆地区)

不知道各位用wordpress的有没有感觉网页打开速度很慢,而且经常是打开之后文字都不能正常显示,要等好久才恢复。

这个问题其实就是因为调用Google公共库,然后大家都知道的原因导致Google整个被墙,所以访问网站时本来应该访问Google获取比如各种ajax、js脚本以及字体文件等,都因为该死的GFW屏蔽了所以无法访问到公共库的资源。就导致了网站卡在了加载这些脚本、字体文件的地方,网页自然就很难显示出来了。

其实解决方法无非3种,第一种是用户方面挂全局代理,不过不能要求每个来访者都自备梯子吧;第二种是传输中使用支持将Google公共库访问的直接强制转回国内镜像的CDN,不过目前看起来基本上国内的CDN都做不到(以前好像可以的不过后来似乎又不行了)。第三种就是服务器上修改文件,将原本应该访问google公共库的地方全部改成访问国内镜像。

于是国内镜像的话咱搜了下,似乎还真不多,而且功能都不全,比如百毒的公共库就不支持字体。于是这里虽然非常不愿意…但是还是得投靠下国内某著名数字安全卫士厂商旗下的公共库服务了。毕竟是给国内人服务的话可能还是用国内的服务比较好。虽然说安全性嘛….这个我真不好说。不过至少改过之后速度方面还真能提高不少。而且重点是直接替换上去就能用,不需要再做更多调整(相比起其他公共库还要手动去改各种js的链接来说,这个算好的了,只需要改域名)。

网址的话是:

useso.com

然后修改的方法就是FTP之类的进入wordpress的目录下,找到wp-includes/script-loader.php这个文件,然后搜索下“google”。然后把那些fonts.googleapis.com或者ajax.googleapis.com全部改成fonts.useso.com或者ajax.useso.com。

总之就是把googleapis.com替换成useso.com。然后保存好就行了,当然为了以防万一,你还可以检查下比如functions.php、index.php和header.php里是否包含有google的公共库链接。

这里还要补充说明的是,光改完wp-includes下的文件还是没用的,有些插件还是自带有这个公共库链接,所以还要进到里面手动改。

目前咱唯一遇到的就是wptouch这款插件,在wp-content/plugins/wptouch/themes/foundation/modules/google-fonts/google-fonts.php文件里,同样的把fonts.googleapis.com替换为fonts.useso.com。

当然其余的插件也建议最好检查一下,不过与其一个个翻文件,倒不如打开网页的检查器来检查网站的各种页面。这样可以很容易找出是wordpress问题还是插件的问题。

 

不过至于这个安全性咱就不好说了,不过稳定性应该还算挺好的。反正做国内的项目的话也不会有那么高的安全性考虑。个人blog的话建议还是保持原样就好了,特别是那些墙外民众,没必要针对这个进行优化。

另外如果你真的太有才太有闲情又不换主题什么的话,倒是可以考虑把公共库改成本地资源。也就是把google的那几个需要用的脚本或者字体什么的下载到本地再按照上面的教程改文件,只不过不是改到国内网站而是直接改成访问被动某个路径吧。不过鉴于公共库的机制估计也很麻烦就是了,还有个缺点就是公共库上的文件更新的话本地上的资源也不能得到及时更新。

 

更新:
来自Mike酱的建议:
linux下执行

cd /var/www/
find . -type f -name '*.php' -exec sed -i 's/googleapis/useso/g' '{}' ';'
find . -type f -name '*.js' -exec sed -i 's/googleapis/useso/g' '{}' ';'

上述三行命令将会把/var/www/(Apache2默认目录)下的文件全部扫描一遍(如果你的wordpress是默认安装在apache的根目录的话),然后会把php和js里所有googleapis替换成useso,省去了手动一个个检查文件的麻烦,多棒~kira

 

附赠参考资料:

http://www.cnbeta.com/articles/304469.htm - 盘点国内网站常用的一些 CDN 公共库加速服务 cnbeta

4 thoughts on “加速你的wordpress打开速度(针对中国大陆地区)

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

:b1 :b2 :b3 :b4 :b5 :b6 more »

Note: Commenter is allowed to use '@User+blank' to automatically notify your reply to other commenter. e.g, if ABC is one of commenter of this post, then write '@ABC '(exclude ') will automatically send your comment to ABC. Using '@all ' to notify all previous commenters. Be sure that the value of User should exactly match with commenter's name (case sensitive).