用 Nginx|Redis Cache 给 WordPress 提速

tengxunyun cera

前言

目前比较多的 WordPress 的缓存方案都是使用对象缓存插件并对应 Page 缓存来实现提速。但是这样的话我们都是经过 Nginx/Apache —— PHP-FPM/Mod-PHP —— Redis 拓展 —— 对象缓存插件 —— Redis。 这个拓扑图其实还是漫长的,性能受限于 PHP。

而这里我们通过 SRcache模块为缓存提供了一个整合后端存储的能力,可以配合Redis使用.如果Redis访问没命中,则发起一个后端请求,获取到数据之后自动缓存到Redis,下次访问将直接调用Redis中的缓存。

拓补图: Nginx —— SRcache 拓展 —— Redis。 直接跳过 PHP,来获得更快的页面访问速度。

评价

WordPress 比较经典的组合就是 Varnish + Apache/Nginx + Memcached + W3TC。这个组合很经典也很抢单,但槽点就是 Varnish 有一定的学习成本,并且大版本号的升级都会更换语法。

Nginx+Redis Cache 配置就比较简单,轻轻松松就搞定了。而且配置虚拟主机啥的都不用学习成本,也不会多一个软件来占用你的端口等等。

准备

首先,我们需要 Redis 和 Nginx 并且配备如下拓展:srcache-nginx-module, redis2-nginx-module, HttpRedisModule 和 set-misc-nginx-module 。如果安装拓展的方法就不介绍了,比较简单粗暴的就是安装 OpenResty ,默认集成哦!

检测 Nginx 是否有安装 ,在 SSH 中输入:  nginx -V 2>&1 | grep 'srcache-nginx-module|redis2-nginx-module|redis-nginx-module|set-misc-nginx-module' -o 如果返回:

srcache-nginx-module
redis2-nginx-module
redis-nginx-module
set-misc-nginx-module

那说明就是有我们必须的配置文件了!

配置

在虚拟主机配置文件中加入:

 

upstream redis {
            server 127.0.0.1:6379;
            keepalive 512;
    }

然后修改一下配置文件,这里我列出我的 Nginx 配置内容供新手参考:

upstream redis {
            server 127.0.0.1:6379;
            keepalive 512;
    }

server {
listen 80;
server_name www.mf8.biz;
access_log off;
index index.html index.htm index.php;
include /path/to/wordpress.conf;  # WordPress 的缓存文件位置
root /data/wwwroot/www.mf8.biz;

    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;
    }

   location /redis-fetch {
        internal  ;
        set  $redis_key $args;
        redis_pass  redis;
    }

    location /redis-store {
        internal  ;
        set_unescape_uri $key $arg_key ;
        redis2_query set $key $echo_request_body;
        redis2_query expire $key 14400; 
        redis2_pass  redis;
    } 

    location ~ .*\.(php|php5)?$ {
        set $key "nginx-cache:$scheme$request_method$host$request_uri";
        try_files $uri =404;

        srcache_fetch_skip $skip_cache;
        srcache_store_skip $skip_cache;

        srcache_response_cache_control off;

        set_escape_uri $escaped_key $key;

        srcache_fetch GET /redis-fetch $key;
        srcache_store PUT /redis-store key=$escaped_key;

        more_set_headers 'X-Cache $srcache_fetch_status';
        more_set_headers 'X-Store $srcache_store_status';

        #fastcgi_pass remote_php_ip:9000;
        fastcgi_pass unix:/dev/shm/php-cgi.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
    }

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
    expires 30d;
    access_log off;
    }
location ~ .*\.(js|css)?$ {
    expires 7d;
    access_log off;
    }
}

先 nginx -t 检测一下是否正确,如果错误就根据提示修改到正确,然后重启,service nginx restart

WordPress 插件

因为用这种缓存方式呢,缓存往往是定死的,也就是说,评论更新了,文章更新了,缓存还是不会自动更新的。因此我们还需要相关插件配合。

安装 Nginx Helper 插件,

参考www.mf8.biz

 

cera aliyun tengxunyun cloudiplc

相关推荐

WordPress缓存提速优化进阶学习目标0sql查询

这是今年第二篇关于WordPress提速性能优化的文章了,第一篇WordPress性能优化——提升网站速度飞起来教程在当时看来能将WordPress网站从5秒左右提速到1秒已是极限,我还沾沾自喜,如今看来那只能算是初级教程,今天给大家带来高级教程,别问我为什么不按初级中级高级的顺序写,因为我的博客想怎样写就怎样写! 大家以为WordPress的速度极限是多少秒?我见过最快的WordPress网站就是我爱水煮鱼的博客,号称0.0006秒生成页面,虽然生成速度很快,但在用户体验上的实际访问速度(这里指输入网址到浏览器展示出来的时间,即DOM解析速度)还是在300ms左右(实测与访客网络有关,在下渣渣移动3G网络)。当然,在第一次访问之后打开其它页面的速度几乎可以说是无缝切换。 WordPress缓存提速优化进阶学习实现0sql查询 目前代码狗博客的访问速度可以在500ms左右展现为了提升WordPress访问速度,站内页面间的切换可以说几乎做到了无缝切换,但相比于优化大神我爱水煮鱼来说还有许多不足之处,等我再研究一阵应该可以写出一篇终极优化教程来,这次WordPress性能提速优化我做了如下更改。 服务器方面 Centos7.2 64位系统升级至Centos7.4 64位系统。 Nginx1.11升级至Nginx1.12。 PHP5.6升级至PHP7.2。 MySQL5.4升级至MySQL5.6。 Memcached1.3升级至Memcached3.0。 新增PHPOpcode字节码缓存。 新增Redis缓存。 WordPress缓存插件 Batcache缓存插件,它能将整个页面静态化,右键查看网页源码可以在网页底部看到绿色的缓存信息。下载好后取出其中advanced-cache.php文件放入wp-content/目录下,注意wp-content目录下,batcache.php文件放入wp-content/plugins/目录下,然后后台开启插件。下载地址:https://wordpress.org/plugins/batcache/ Memcached Object Cache缓存插件,取出其中object-cache.php文件放入wp-content/目录下,默认开启,无后台启动选项。下载地址:https://wordpress.org/plugins/memcached/ 做好上面的部分再修改wp-config.php文件中的配置,如下(没有就直接添加即可) define(‘ENABLE_CACHE’, true);//开启memcached缓存 define(‘WP_CACHE’, true);//开启默认缓存 好了,到这里再看看你的WordPress网站打开速度如何?一般来说如果上面的步骤都做了,你的WordPress网站打开速度应该在1秒以内,一般只需0.X秒即可打开网站,如果有图片等大资源,配上CDN会更快哟。到此sql查询次数也会降低至20次以内(各主题代码优化不一致,听说有的甚至能降低至2个sql查询,不知道他是怎么做到的很好奇,有知道身边有这样的朋友麻烦告诉他,他又多了一个粉丝)。 高级加速 上面部分应该可以算是WordPress性能优化提速的中级教程了,下面才是高级教程,学习下面的教程需要你的服务器支持memcached内存缓存,并且个人对WordPress函数有一定理解,否则改坏了程序,网站跑不起来别赖我,再提醒一句,一定要提前快照,切记! 在进入高级教程前我们需要先了解3个WordPress函数,它们分别是: wp_cache_set() 把数据写到缓存中。 wp_cache_get() 读取缓存数据。 wp_cache_delete() 删除缓存。 它们需要用到如下四个参数 这些函数会涉及到的四个参数: $key: 对象的 key。 $data: 要存的值。 $group: 分组,可选参数,用来把缓存对象就行分组。 $expire: 过期时间,可选参数,如果是默认缓存,这个函数没用,如果是内存缓存,是设置缓存的时间,单位是秒,默认为0(0的意思就是永远,不会自动过期)。 基本使用 $data = wp_cache_get(“缓存key”,’缓存分组’); if(false === $data ){ $data = …

宝塔通过NGINX反向代理 缓存文件搭建镜像站

location / { proxy_ssl_server_name on; expires 3d; proxy_set_header Accept-Encoding ”; root /www/wwwroot/【域名】; proxy_store on; proxy_store_access user:rw group:rw all:rw; proxy_temp_path /www/wwwroot/【域名】; if ( !-e $request_filename) { proxy_pass https://raw.githubusercontent.com; } } 可以通过上述代码在宝塔创建#反向代理#后,通过修改配置文件搭建镜像站,用来搭建#github#下载#镜像#比较方便,同时文件会在网站目录下保存,可以反向代理https网站

WordPress博客网站使用Memcached和Redis缓存哪个更好|

今天小白得到了一台4核8G的服务器,马上安装上宝塔。接下来就遇到了一个选择困难综合征。到底给数据库安装那种缓存好。是Memcached缓存,还是Redis缓存?接下来小白将详细分析下这两种的区别。 首先,我们今天研究的大前提是#wordpress#博客,那么注定数据量不会太大。访问量也不是超多那种。 一、#Memcached#和#Redis#区别 1、数据存储方式 Memecache把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。 Redis有部份存在硬盘上,这样能保证数据的持久性。 2、数据支持类型 Memcache对数据类型支持相对简单。 Redis有复杂的数据类型。 3、使用底层模型差别 它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。 Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。 4、#value#值大小不同 redis最大可以达到1GB,而memcache只有1MB。 二、Memcached和Redis哪个更适合WordPress 根据上面对比我们发现memcached为内存存储,其占用量最大就512MB内存。而Redis可以无限大占用内存和硬盘空间。memcached更适合存储简单的值。所以小白得出的结论是针对内容不多的WordPress博客建议选择用memcached做MySQL数据库的缓存。 但是这里也有一种例外,有些采集站大佬。因为数据量超多。大部分都超过10万篇文章。那种还是用Redis吧。毕竟有这么多内容的服务器配置应该也不低吧。 以上就是今天要介绍的所有内容,如果有错误欢迎留言指出。

宝塔面板Nginx 开启Brotli压缩|提高网站页面加载速度 建站必备 WordPress页面压缩加速

宝塔面板开启方法 1.安装libbrotli cd /www/server git clone https://github.com/bagder/libbrotli cd libbrotli ./autogen.sh ./configure make && make install 2.下载ngx_brotli模块及其依赖: 源码地址,是google开源的一个:https://github.com/google/brotli cd /www/server #下载brotli git clone https://github.com/google/ngx_brotli.git cd ngx_brotli #更新brotli git submodule update —init 3.先查看目前的Nginx版本信息,使用命令: nginx –V 大致输出内容: [[email protected] ~]# nginx –V nginx version: nginx/1.15.10 built by gcc 4.8.5 20150623 (Red Hat 4.8.5–36) (GCC) built with OpenSSL 1.1.1b 26 …

微信扫一扫,分享到朋友圈

用 Nginx|Redis Cache 给 WordPress 提速