玩WordPress已经很多年了,但是都没有坚持下来,记得最早的时候是2009年,那时候注册了两个域名,cnscz.cn 另外一个是jiuyueer.cn,用了一年,就荒废了,那时候注册cn域名才1块钱。后来又陆陆续续弄了两三次网站,想记录点东西,都以失败告终。
这个域名使用也有一两年了,之前购买了知更鸟的begin主题,写了些东西,后来折腾服务器,把数据完全弄丢失了。然后又重新折腾,使用现在用的这个模板。
对于我个人来说,我是一个不折腾会死的人。所以总是折腾怎么把网站加快。以前使用memcached缓存,后来缓存Redis缓存。在使用Redis缓存的时候,发现WordPress官方有一个叫做Nginx Helper的插件可以清理Redis缓存。并且在插件设置上看到可以使用一个nginx Fastcgi cache的选项,遂用蹩脚的英语开始看怎么使用这个功能。
经过一番努力之后,终于折腾成功,后来百度一下,才知道,国内大佬张戈博客早就使用了这个功能。
要使用加速,首先需要加载nginx的ngx_cache_purge 模块
进入服务器,查看nginx是否已经编译了这个模块,食用方法:ningx -V
如果出现--add-module=../ngx_cache_purge-2.3这样的,说明已经加载成功,如果没有加载成功,需要自己重新编译nginx。如果你跟我一样使用的是军哥的lnmp一件安装包,你只需要在lnmp.conf这个文件中Nginx_Modules_Options=''这个参数里面添加上ngx_cache_purge-2.3的路径,然后upgrade就可以了。
其他的方式,可以参考张戈博客里面的升级方式。
安装好模块之后,配置nginx
在server模块下面添加如下代码,请按着自己实际情况自行修改。
我将如下几行代码,放置在我的nginx.conf文件里面,因为,我有好几个网站在一个服务器上。
#下面2行的中的wpcache路径请自行提前创建,否则可能会路径不存在而无法启动nginx,max_size请根据分区大小自行设置fastcgi_cache_path /tmp/wpcache levels=1:2 keys_zone=WORDPRESS:250m inactive=1d max_size=1G;fastcgi_temp_path /tmp/wpcache/temp;fastcgi_cache_key "$scheme$request_method$host$request_uri";fastcgi_cache_use_stale error timeout invalid_header http_500;#忽略一切nocache申明,避免不缓存伪静态等fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
然后将下面的代码放置到你的server模块里面。
set $skip_cache 0; #post 访问不缓存 if ($request_method = POST) { set $skip_cache 1; } #动态查询不缓存 if ($query_string != "") { set $skip_cache 1; } #后台等特定页面不缓存(其他需求请自行添加即可) if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") { set $skip_cache 1; } #对登录用户、评论过的用户不展示缓存 if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") { set $skip_cache 1; } #这里请参考你网站之前的配置,特别是 sock 的路径,弄错了就 502 了! location ~ [^/]\.php(/|$) { try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; include fastcgi.conf; #新增的缓存规则 fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; add_header X-Cache "$upstream_cache_status From $host"; fastcgi_cache blog; fastcgi_cache_valid 200 301 302 304 1d; } #缓存清理配置(可选模块,请细看下文说明) location ~ /purge(/.*) { allow 127.0.0.1; allow "此处填写你服务器的真实外网 IP"; deny all; fastcgi_cache_purge blog "$scheme$request_method$host$1"; } 后面为自己的配置!!
至于说上述代码应该放到站点.conf 文件的 Server{}哪里,比较保险的建议放在站点 server_name 和 root 的下面为宜,理论上这样最完美。
注:代码中红色加粗的地方是需要对应 nginx.conf 里相应参数的以及需要修改为自己服务器的实际内容。
弄好之后,就需要安装前文说的nginx helper插件了。
安装nginx helper插件
完成以上之后,重启nginx服务,FastCGI cache就生效了。这是,在WordPress后台搜索Nginx Helper 关键词在线安装。设置好插件之后,就一切OK了。
因为使用目前这个模板,无法使用Nginx helper插件清除缓存,经过查询之后,换成了Nginx cache插件。更新内容就自动清除缓存!