使用Nginx fastcgi_cache缓存加速优化WordPress

高并发网站架构的核心原则其实就一句话“把所有的用户访问请求都尽量往前推“,即:能缓存在用户电脑本地的,就不要让他去访问CDN。 能缓存CDN服务器上的,就不要让CDN去访问源(静态服务器)了。能访问静态服务器的,就不要去访问动态服务器。以此类推:能不访问数据库和存储就一定不要去访问数据库和存储。

WordPress最好的优化方式就是尽量不安装插件,Wordpress是典型的PHP-MySQL应用,去做数据库缓存,倒不如让轻量级的Nginx直接去缓存WordPress内容。

Nginx内置FastCgi缓存,但是不支持自动清除缓存。当你在Wordpress里面新建/修改一篇文章,或者访客提交评论的时候,自动清空相关的缓存是必要的!Nginx需要安装ngx_cache_purg+量身定做的WordPress缓存清理插件:Nginx Helper。

1. 安装Nginx ngx_cache_purge模块

1)查看ngx_cache_purge是否安装

nginx -V 2>&1 | grep -o ngx_cache_purge

显示ngx_cache_purge表示已经安装

2)安装ngx_cache_purge模块

《OneinStack》和《lnmp一键安装包》下安装ngx_cache_purge模块

代码如下:

cd /root/oneinstack/src
wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
wget http://nginx.org/download/nginx-1.9.10.tar.gz
tar xzf ngx_cache_purge-2.3.tar.gz
tar xzf nginx-1.9.10.tar.gz
cd nginx-1.9.10
nginx -V #查看nginx编译参数,最后加上--add-module=../ngx_cache_purge-2.3
./configure --prefix=/usr/local/nginx --user=www --group=www \
--with-http_stub_status_module --with-http_v2_module --with-http_ssl_module \
--with-ipv6 --with-http_gzip_static_module --with-http_realip_module \
--with-http_flv_module --with-ld-opt=-ljemalloc \
--add-module=../ngx_cache_purge-2.3
make #编译
mv /usr/local/nginx/sbin/nginx{,_`date +%F`} #备份nginx
cp objs/nginx /usr/local/nginx/sbin
nginx -V 2>&1 | grep -o ngx_cache_purge
# 显示ngx_cache_purge表示已经安装成功

2. Nginx配置
建议将fastcgi_cache_path设置tmpfs内存中,操作系统不同tmpfs路径也不同,如下:
 
 CentOS:/dev/shm
Ubuntu和Debian:/run/shm
 
修改nginx虚拟主机配置文件/usr/local/nginx/conf/vhost/blog.linuxeye.com.conf:

 

代码如下:
fastcgi_cache_path /dev/shm/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;
server {
listen 443 ssl http2;
ssl_certificate /usr/local/nginx/conf/vhost/linuxeye_blog.crt;
ssl_certificate_key /usr/local/nginx/conf/vhost/linuxeye_blog.key;
ssl_ciphers "CHACHA20:GCM:HIGH:!DH:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS";
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
#ssl_stapling on;
#ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
server_name blog.linuxeye.com;
access_log /home/wwwlogs/blog_nginx.log combined;
index index.Html index.htm index.php;
include wordpress.conf;
root /home/wwwroot/blog;
set $skip_cache 0;
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;
 }
location ~ [^/]\.php(/|$) {
 #fastcgi_pass remote_php_ip:9000;
 fastcgi_pass unix:/dev/shm/php-cgi.sock;
 fastcgi_index index.php;
 include fastcgi.conf;
 fastcgi_cache_bypass $skip_cache;
 fastcgi_no_cache $skip_cache;
 fastcgi_cache WORDPRESS;
 fastcgi_cache_valid 60m;
 }
location ~ /purge(/.*) {
 allow 127.0.0.1;
 deny all;
 fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1";
 }
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
 expires 30d;
 access_log off;
 }
location ~ .*\.(js|Css)?$ {
 expires 7d;
 access_log off;
 }
}

使nginx配置生效
 

代码如下:
 service nginx reload

 
重启系统后shm内存中nginx-cache文件夹会丢失,为了使重启生效(自动创建文件夹),修改/etc/init.d/nginx的make_dirs下一行添加:

代码如下:
 [ ! -d '/dev/shm/nginx-cache' ] && { mkdir /dev/shm/nginx-cache; chown -R ${user}.$user /dev/shm/nginx-cache; }

 
3. WordPress安装Nginx Helper插件
WordPress后台【插件】—【安装插件】搜索【Nginx Helper】安装即可。如下设置:


 

 

修改wordpress网站根目录wp-config.php添加如下行:

代码如下:
define('RT_WP_NGINX_HELPER_CACHE_PATH','/dev/shm/nginx-cache');

4. 测试
测试时候勾选Enable Logging(记录日志)、Enable Nginx Timestamp in HTML(插入缓存信息)
查看Nginx Helper是否刷新日志:

 

时间: 2024-09-17 04:20:15

使用Nginx fastcgi_cache缓存加速优化WordPress的相关文章

WordPress优化利用Nginx fastcgi_cache缓存加速

高并发网站架构的核心原则其实就一句话"把所有的用户访问请求都尽量往前推",即:能缓存在用户电脑本地的,就不要让他去访问CDN. 能缓存CDN服务器上的,就不要让CDN去访问源(静态服务器)了.能访问静态服务器的,就不要去访问动态服务器.以此类推:能不访问数据库和存储就一定不要去访问数据库和存储. WordPress最好的优化方式就是尽量不安装插件,之前有分享过<wordpress启动Redis缓存加速>,Wordpress是典型的PHP-MySQL应用,去做数据库缓存,倒不

Nginx用ngx_cache_purge模块缓存加速 支持html伪静态页面

Nginx缓存加速步骤如下 一.添加模块 本文分享的 Nginx 缓存需要额外编译 ngx_cache_purge 模块.至于下载模块.重新编译后面会讲. 二.Nginx配置 要用这个缓存功能,建议重新弄一个 server 模块(替换之前的),如下代码是张戈博客目前正在使用的规则(已删除了我自定义的伪静态规则,避免混淆视听): #####################################################################################

wordpress开启Memcached 内存缓存加速网站

方法一,利用linux Memcached开启 测试环境:阿里云 CentOS 5.4 32位,军哥的 LNMP一键安装包配置的环境 1.0. 安装 Memcached lnmp1.0 :进入lnmp解压后的目录,执行:./memcached.sh (这是军哥lnmp内置的安装脚本,其他自己配置的环境,自己google安装方法吧), 回车确认后就会自动安装memcache php扩展和memcached. 安装完以后,就可以正常启用了. WordPress 开启 Memcached 缓存 下载

基于反向代理的Web缓存加速——可缓存的CMS系统设计

web|缓存|设计 对于一个日访问量达到百万级的网站来说,速度很快就成为一个瓶颈.除了优化内容发布系统的应用本身外,如果能把不需要实时更新的动态页面的输出结果转化成静态网页来发布,速度上的提升效果将是显著的,因为一个动态页面的速度往往会比静态页面慢2-10倍,而静态网页的内容如果能被缓存在内存里,访问速度甚至会比原有动态网页有2-3个数量级的提高. 动态缓存和静态缓存的比较 基于反向代理加速的站点规划 基于apache mod_proxy的反向代理加速实现 基于squid的反向代理加速实现 面向

Nginx工作原理和优化、漏洞(转)

查看安装了哪些模块命令: [root@RG-PowerCache-X xcache]# nginx/sbin/nginx -Vnginx version: nginx/1.2.3built by gcc 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC) TLS SNI support enabledconfigure arguments: --prefix=/opt/xcache/nginx --with-ipv6 --with-http_ssl_module --w

PHP Opcode缓存加速组件:APC详解介绍

PHP在性能上相对于其他编译型语言来说算不上突出,但是使用了Opcode缓存后性能提升还是很明显的.常见的缓存加速组件主要有 eAccelerator,XCache,APC本文主要介绍APC的安装使用. APC,全称是Alternative PHP Cache,官方翻译叫"可选PHP缓存".它为我们提供了缓存和优化PHP的中间代码的框架. APC的缓存分两部分:系统缓存和用户数据缓存. 系统缓存 它是指APC把PHP文件源码的编译结果缓存起来,然后在每次调用时先对比时间标记.如果未过期

浅析如何优化wordpress的页面加载速度

网站的加载速度可以在很多方面上影响到你的网站.一项研究表明,49%的用户可能会因为你的站点的加载速度过慢而放弃你的网站转向你的对手的网站.这意味着我们必须采取一下措施来提高加载速度,降低因为加载速度而导致的用户减少,转换率低,跳出率高.此外页面的加载速度也是谷歌衡量一个网站排名的指标之一.更快的加载速度有助于你获得刚好的排名,因此加载速度的优化应该作为我们优化策略的一部分. 页面在加载性能优化包括: 删除未使用的CSS 压缩HTML.CSS和Javascript 缩小HTML.CSS和Javas

Nginx + PHP缓存详解

Nginx缓存 nginx有两种缓存机制:fastcgi_cache和proxy_cache 下面我们来说说这两种缓存机制的区别吧 proxy_cache作用是缓存后端服务器的内容,可能是任何内容,包括静态的和动态的 fastcgi_cache作用是缓存fastcgi生成的内容,很多情况是php生成的动态内容 proxy_cache缓存减少了nginx与后端通信的次数,节省了传输时间和后端带宽 fastcgi_cache缓存减少了nginx与php的通信次数,更减轻了php和数据库的压力. pr

安装nginx时的简单优化

下面来简单说下安装nginx时的简单优化(没有涉及到后期的优化) 一.编译安装前优化 1.关闭debug模式 在NGINX源码文件被解压后,修改auto/cc/gcc这个文件 #debug CFLAGS=" $CFLAGS -g" 注释掉这行,也可以删除! 2.指定特定CPU型号编译优化 --with-cc-opt='-O3' --with-cpu-opt=CPU  #有这几种类型 pentium,pentiumpro,pentium4,athlon opteron,amd64,spa