Wordpress优化:网站用nginx前端缓存+Redis Cache缓存提速网站

新手站长搭建网站通常为了省钱没去选择大厂的云服务器,而小厂的服务器虽然便宜,可是访问速度也很感人,同时若是你用的是Wordpress建站程序,若是不作优化,那么速度将会更感人。利用宝塔面板和wordpress来搭建网站仍是很容易的,可是搭建网站容易,想要访问快却不容易。有些小伙伴老是问,宝塔面板打开很快,可是个人网站访问却很慢。宝塔面板访问快,确定是利用了缓存来加速,你的网站访问慢,额,配置,带宽,都是慢的缘由,可是最重要的多是没有配置缓存。php

应该之前都讲过不少配置缓存的文章,基本都是基于宝塔面板和wordpress来讲的,固然若是利用宝塔面板来安装wordpress,最快捷的方式就就是安装WP-Super-Cache,或者用 WP-Rocket 可是 WP-Rocket是收费的,前者是免费的。html

若是想省钱又省事的话,那么WP-Super-Cache更安心点,加上Autoptimze基本上也有明显提高。其余的还有不少插件好比;WP Fastest Cache、W3 Total Cache、cos-html-cache、Cachify……总得来讲,安装了缓存插件后提速仍是有效果的,可是也带来了很多的问题。例如配置复杂、生成规则、插件冲突以及没法应对突发流量,也就是说使用缓存插件仍是没法达到应对大流量冲击的状况。前端

固然还有多方式,站长自己的服务器很渣,为了提升速度,目前仍是采用了Nginx前端缓存。若是你也是一个毕竟渣的服务器,那么你也能够参考下》nginx

那利用Nginx fastcgi_cache缓存,直接使用Nginx为页面生成缓存来加速wordpress,并且还支持html伪静态页面,效率比使用PHP缓存插件要高得多,也比较适合小配置的VPS上使用。redis

1、安装Nginx ngx_cache_purge模块小程序

目前本教程是基于宝塔面板来说的这个教程,宝塔面板很贴心的给咱们编译好了这个模块,若是你不放心,能够用命令来查看一下。浏览器

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

查看ngx_cache_purge是否安装,没有数据表示未安装安全

咱们输入命令以后,结果如图:服务器

 

2、Nginx开启fastcgi_cache缓存-配置实例

既然编译好了模块,要用这个缓存功能,咱们就须要配置www.src1024.com.conf这个文件,很好找。

/www/server/panel/vhost/nginx/www.src1024.com.conf

也能够直接去面板找到「网站」-「设置」-「配置文件」

 

2.1配置实例

下面我直接贴出www.src1024.com的Nginx 开启 fastcgi_cache缓存配置实例,详细的说明以下:

[wm_login]

#下面各个参数的含义请自行百度!

#下面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;

#Ps:若是是多个站点,以上内容不要重复添加,不然会冲突,能够考虑将以上内容添加到nginx.conf里面,避免加了屡次。

server

{

    listen 80;

listen 443 ssl http2;

    server_name www.src1024.com src1024.com;

    index index.php index.html index.htm default.php default.htm default.html;

    root /www/wwwroot/www.src1024.com;

 

    #start

    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-74.sock;

                fastcgi_index index.php;

                include fastcgi.conf; 

                add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

                #新增的缓存规则

                fastcgi_cache_bypass $skip_cache;

                fastcgi_no_cache $skip_cache;

                add_header X-Cache "$upstream_cache_status From $host";

                fastcgi_cache WORDPRESS;

                add_header Cache-Control  max-age=0;

                add_header Nginx-Cache "$upstream_cache_status";

                add_header Last-Modified $date_gmt;

                add_header X-Frame-Options SAMEORIGIN; # 只容许本站用 frame 来嵌套

                add_header X-Content-Type-Options nosniff; # 禁止嗅探文件类型

                add_header X-XSS-Protection "1; mode=block"; # XSS 保护

                etag  on;

                fastcgi_cache_valid 200 301 302 1d;

        }

        #缓存清理配置(可选模块,请细看下文说明)

        location ~ /purge(/.*) {

            allow 127.0.0.1;

            allow "45.154.199.50";

            deny all;

            fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1";

        }

        #end

#如下内容以默认网站原来设置……

[/wm_login]

关于sock,宝塔面板的在/www/server/php/74/etc/php-fpm.conf中有配置路径宝塔面板的sock,若是不清楚,能够本身打开看下,而后复制到须要修改的地方就能够了。

注意:这个74表示你的PHP版本,若是是PHP7.2改为72,同理……

2.2 简单说明

本地or内存?在fastcgi_cache_path和fastcgi_temp_path中,有人会建议将它设置为内存路径,例如:/dev/shm/nginx-cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;,若是你的磁盘IO很慢的话建议采用此方式,毕竟内存的读写速度很是快。

add_header Cache-Control若是是动态内容要实时更新的话,能够设置为0,不然能够设置时间大一些。

请仔细阅读代码中的全部注释,该修改的修改,该建立的建立,该补充的根据实际状况补充,额,基本没什么问题的,宝塔面板的直接复制粘贴就能够了。

3、安装Nginx Helper插件

配置好了fastcgi_cache缓存以后,咱们须要安装插件, fastcgi_cache 有一个量身定作的 WordPress 缓存清理插件:Nginx Helper。这个插件不定时更新,并且更新的很频繁。安装这个插件 ,很是简单,直接进入 WordPress 后台插件安装界面搜索 Nginx Helper 关键词在线安装便可。

安装后,从后台【工具】==>【Nginx Helper】打开插件设置界面以下所示:

 

首先是开启purge,而后咱们选择nginx Fastcgin cahe,由于就咱们用就是这个缓存。以后选择Delete local server cache files。固然第一个也能够用,可是通常推荐用Delete local server cache files由于每一个服务器的环境都不同,缓存路径也会不尽相同就会致使插件没法找到缓存文件并删除!

插件还提供了其它的一些设置,功能很是丰富,例如发表新文章、新评论时是否更新Nginx缓存等。

额,通常默认的就能够的选项就能够了,若是看不懂能够用谷歌浏览器翻译下。

下图是「大鸟」大神的配置,能够参考

 

3.1清理模式选择

清理模式还须要仔细说下。

①、purge 模式

这个模式须要保留上文 Nginx 配置中的 purge 清理路径,清理的时候会产生一个请求。

出于安全考虑,通常 purge 都不会彻底开放!只有特定的 IP 能够访问,因此,若是用了 CDN 的朋友,再使用模式一,则须要在服务器上的 /etc/hosts 中将网站域名解析为服务器真实 IP,以便插件直接请求 purge 路径,而不用走 CDN 节点,避免请求被拒绝。仍是没搞懂的话就放弃这个模式吧!

②、文件模式

模式二是直接清理对应的缓存文件,不须要请求 purge 这个清理路径,因此使用模式二,不须要配置上文 Nginx 的 purge 规则(我我的推荐使用这个模式)。

因为插件做者定义的缓存路径是 /var/run/nginx-cache ,而咱们可能会根据服务器实际状况来自定义缓存路径,这样一来,缓存路径的不一样就会致使插件没法找到缓存文件并删除!

3.2解决办法

很简单,在 WordPress 根目录下的 wp-config.php 中新增以下代码便可:

//根据实际状况定义缓存的存放路径

define( 'RT_WP_NGINX_HELPER_CACHE_PATH','/tmp/wpcache');

Ps:不知道添加到第几行的话,能够添加到 define('WPLANG', 'zh_CN'); 的后面便可。添加后建议重载一下 php,确保变量生效(主要针对开启了 PHP 缓存的网站!)。

若是所有设置好,改保存的保存,改重启的重启,等等!

4、Nginx fastcgi_cache效果预览

启用了Nginx fastcgi_cache后,咱们就能够在浏览器Header 头部信息中看到已经命中了。

 

对于已经设置了不缓存的页面,Nginx fastcgi_cache会直接显示BYPASS,咱们若是是登陆状态那是不显示缓存的,如图:

 

同时,咱们服务器的缓存路径中也能看到Nginx fastcgi_cache生成的缓存文件。

 

若是你发现你的评论过的用户依然用的是缓存,那应该是WP没有记住cookie,把如下代码加入到functions.php中便可。

add_action('set_comment_cookies','coffin_set_cookies',10,3);

function coffin_set_cookies( $comment, $user, $cookies_consent){

  $cookies_consent = true;

  wp_set_comment_cookies($comment, $user, $cookies_consent);

}

5、总结

Nginx开启fastcgi_cache缓存对于加快网页响应速度以及节省服务器资源有着很是重要的意义,下图是其余大神在alibabacloud.com的测试结果,能够看出来启用缓存后服务器的承载能力有了很是大的提高。

 

5.1 细节调整

启用fastcgi_cache缓存时,发如今Nginx配置文件中添加了Cache-Control信息,可是老是不生效。HTTP头部信息会总会包含如下信息:

Cache-Control: no-store,no-cache,must-revalidate,post-check=0,pre-check=0 和 Pragma: no-cache,

通过排查,问题出在了宝塔面板中的session.cache_limiter的PHP.ini设置部分, 默认值是nocache,咱们须要将它设置为none便可。

 

5.2 X-Powered-By

咱们用宝塔面板会默认的出现X-Powered-By 7.2.12 出现php的版本信息,从安全角度来讲仍是很不友好的。X-Powered-By是网站响应头信息其中的一个,出于安全的考虑,通常会修改或删除掉这个信息。

#php7.4 默认关闭

宝塔面板里咱们如何修改呢:PHP.ini设置expose_php = off

设置好以后,咱们重载php服务。

利用宝塔面板给WordPress开启Nginx fastcgi_cache缓存加速方法就说完了,若是有什么疑问能够留言,说实话利用宝塔面板来搞这个Nginx fastcgi_cache缓存加速仍是很是方便的。喜欢折腾的小伙伴赶忙试试。

其实,Nginx Helper还支持redis cache模式的缓存,也是很是不错的!

Nginx Helper真的是很是强大,关键是这么强大的插件仍是免费的。

最后:友情提示,若是咱们勾选Enable Nginx Timestamp in HTML 你在查看网页源代码的时候会发现一些信息如图:

 

若是你不须要这些信息,能够选择关闭。

本文参考:大鸟博客

本文来源:1024资源网

更多建站、小程序问题能够直接加站长QQ,站长长期出售多商户系统app/小程序/PC源码 无任何加密,支持PHP7.4

相关文章
相关标签/搜索