优化 WordPress 页面到一秒内

Reading time ~1 minute

本帖系技术贴,目的在于总结一下这次对本站点优化的经历。总之结果很重要,把基本上所有页面都优化到大约0.8秒左右的载入速度。如果你也是在独立LAMP服务器上运行WordPress的话,我想本文可能对你会有所帮助。 

Wordpress 服务器配置

服务器是在阿里云上的主机,主机的配置比较低:1vCPU,1GB内存;后台数据库是RDS服务。

pic-003

服务器的操作系统是Debian,安装的php的情况见 phpinfo.php 的输出。

WordPresss所安装的插件如下:akismet syntax-highlighter download-monitor update-twitter-php google-sitemap-generator use-google-libraries wordpress-popular-posts wordpress-seo jiathis wp-easyarchives kimili-flash-embed wpjam-qiniu memcached wp-pagenavi nextgen-gallery wp-postviews optimize-db wp-recentcomments regenerate-thumbnails wp-super-cache revslider wp_video-master shortcodes-ultimate yet-another-related-posts-plugin simple-google-analytics

Wordpress 插件:WP Super Cache

Super Cache 使用的是: mod_rewrite 缓存模式。 并开启了:使用对象缓存系统来存储缓存文件。 (实验室功能)  这个功能和memcached插件是相关的。在CDN的配置这里,开启了CDN的支持,并把off-site URL指向了 http://martinliu.qiniudn.com 七牛的空间。

pic-002

现在很多页面查看源码的时候,都可以看到是0.8秒以内的速度,这个速度起码是本站点有史以来的最快速度。不光服务器速度快了,更重要的是所有静态文件也都是用的大陆的本土CDN站点了。

Wordpress 插件:**memcached 和 MemCached服务

**

这个插件我第一次用,真可谓是神器,它需要和操作系统的memcached服务配合起来使用;这个插件的安装比较反常规:不能在控制台里面启用,根本就启用不了,需要安装插件后,在未激活的状态下,把它的文件手工放到wp-content目录里面即可。操作系统的memcached的服务安装和配置也比较简单,总之运行基本全都靠默认的配置参数即可。另外php的memcached模块也要安装并启用。它们配合起来能够把页面的request次数降低到冰点。我的主页用这个组合之前需要30次左右的request,用了之后就3次了,它主要是靠内存做缓存,从而加速了网站。

pic-3

上图是本站首页的测试结果,亮点在它只有3个请求,Web服务器只是做了三个响应就完事了,这个页面的内容就全都可以发给浏览器了。减少了20多次请求的处理,这些请求的结果都被memcached给缓存到内存里面了,目前只能够给memcached开80MB的缓存空间,也就这点内存常驻的网站缓存解决了大问题。加速页面的响应速度。不得不说memcached服务还是挺NB的。

pic-001

上图是一个常规的文章页面,请数量从以前的30左右降到10以内,我什么也不说了。当然上面这连个图里面也能看出本网站的一点问题,这里也不说了。

Wordpress 插件:WPJAM 七牛镜像存储

本次折腾主要冲着这个来的。CDN我是第一次玩,不过用一次之后,感觉也挺简单的。先要找一个免费的CDN服务商开一个空间,之后一般送1GB空间一个月1GB流量,对我的网站来说足够了。配置完之后就拿到了一个二级域名,然后还有几个重要的Key编码。安装了水煮鱼做的这个插件之后,配置完,什么也不用管,网站的哪些静态文件就在首次访问的时候,被自动传到CDN上面了,下次网页再被打开的时候就全都走CDN上下载了,从而把Apache的基本所有静态文件的请求都offload走了,从而降低了服务器的负荷,提升了它对动态内容的反应速度。我的服务器只有1GB内存,用了CDN之后,我也不是很担心内存不够用的问题了。

未尽事宜

由于时间仓促,有几个活也没有时间做。1)我的域名martinliu.cn的DNS查询的速度有时候挺慢的,快也要500ms,有时候甚至超过一两秒,不知道是DNSPod不给力还是我的服务器自身有问题。2)CDN的正规用法需要在服务器端写一个脚本,把wordpress里面需要CDN加速的文件都上传到自己CDN的空间里面,并且可以编写脚本定期增量传输。由于最近太忙,以后有时间在研究这个问题吧。3)wordpress-popular-posts此插件在每个页面上都占用一定的时间,不知道是否能把它消除到。4)Gravatar头像的加速,否则这些图标在评论多的帖子上从国外站点下载,实在是太慢了。

互联网规模的超融合平台

什么是互联网规模?什么是web scale风格?看下Nutanix的亮点。 阅读全文

2017DevOps采用和趋势现状-信息图

Published on February 11, 2017