nginx使用fastcgi_cache来缓存wordpress

使用nginx缓存效率高,高并发无压力,等于别人访问的是html

缓存过后,你网站的速度将会坐飞机一样

1h1g的 不考虑网络带宽的情况下,并发100个人都是小意思 不会有太大波动

首先编辑nginx.conf

在http括号中加入 以下内容

fastcgi_cache_path /var/run/nginx-cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

fastcgi_cache_path后面的是缓存的目录,内存大建议就这样(/var/run/ 代表内存下的一个目录),内存小建议缓存到/tmp目录下 使用硬盘,2者的差别 一个访问内存 一个访问硬盘,除非你页面访问量实在大,不然为了省内存还是/tmp下就行。

keys_zone参数后面的是 缓存名字:缓存大小 一会server里需要用到。

inactive 参数代表缓存多久,到达制定时间就删除缓存,可以用m或者d,一个代表分钟,一个代表天

其他参数不用管,没什么需要修改的


紧接着,关键的东西来了

在server括号里或者你的虚拟主机的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;
	}

接下来找到你的php的location

在括号里增加以下缓存参数

fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
fastcgi_cache WORDPRESS;
fastcgi_cache_valid  60m;

前2行不用管,第三行代表你刚开始在http括号里的 keys_zone 的缓存名字

第四行 fastcgi_cache_valid 之后可以加网页状态码以及时间,意思就是针对此状态码缓存多久,如果不写状态码,那就是全部状态码都用此时间

到此nginx缓存wordpress教程就结束了。

当然,我们还需要自动清除缓存,不然写文章,更新文章 不刷新缓存都是看不到的,下一篇来告诉你 如何自动清除缓存