WordPress 使用 WP Super Cache 高级设置中的专家模式下的Nginx规则设置以及优化方案

wordpress中有一个用的人挺多的缓存插件,WP Super Cache

WP Super Cache:https://cn.wordpress.org/plugins/wp-super-cache/

原理是把伪静态出来的html页面保存成一个真的html文件到缓存目录中,等下次有别人打开这个页面,就可以不用使用php加数据库伪静态生成,可以直接打开这个缓存好的真html文件,节约服务器的cpu和内存资源,当然最主要的还是可以加快打开速度。

这个软件有一个普通模式有一个专家模式,普通模式不需要过多设置,直接点开启就行,但是缓存效果一般,因为普通模式是使用的php的技术缓存的。

并且普通模式和redis同时使用会冲突,所以肯定推荐改成专家模式。

 

这里另外多说几句,服务器物理内存小的,并且网站文章内容不是特别多,没上万的,用不到redis,使用WPJAM的Memcached的缓存就可以了。

redis和Memcached的大概原理,就是把经常读取的数据库缓存到内存中,下个用户就可以不用去mysql数据库中,直接读内存就可以了。

redis是重启系统之后数据也会存在,Memcached有点像内存条,重启之后数据就消失了,缓存需要重新生成。

新手,小网站 ,物理内存小的用户,使用Memcached就够了。

网站文章内容多,服务器物理内存大,比如文章超过2万,物理内存8G的,就推荐redis了。

redis 和 Memcached 只要有一个就够了,不用同时安装。

redis 设置方案:https://www.mfpud.com/topics/1975/

Memcached 可以试试WPJAM:https://wordpress.org/plugins/wpjam-basic/

 

接着说回WP Super Cache,所以专家模式就是很有必要的选择了。但是专家模式需要单独的设置一下规则,对于新手来说很不友好。

所以我就在这里简单的说一下专家模式的使用方法,下面教程中提到的方法用的是Nginx,用apache别看了

宝塔面板 - 软件商店 - PHP 设置 - 安装拓展

opcache 要装上, memcached 和 redis 根据你的情况选择安装。

网站后台插件,安装 WP Super Cache ,启用插件

通用里面,启用缓存

CDN界面,根据你的网站决定,是否启用CDN了

主要是第二个的高级界面,点击高级界面,选择专家模式

注意

压缩页面以便让来访者更快浏览。 (推荐)

这个选项谨慎勾选,可以先选上试试,如果选上之后,打开php之类的后缀变成了文件下载而不是打开页面之后,把这个选项的勾去掉。

其他的选项根据你的情况勾选,最后点保存。

 

我用的是宝塔面板,其他的也是一样,打开宝塔面板,找到网站,设置网站的伪静态。

需要把你原来的伪静态规则完全删掉,换成我提供的这个规则

代码

# WP Super Cache rules.
# Designed to be included from a 'wordpress-ms-...' configuration file.
 
set $cache_uri $request_uri;
 
# 请求方式为post时不使用缓存
if ($request_method = POST) {
        set $cache_uri 'null cache';
}
 
if ($query_string != "") {
        set $cache_uri 'null cache';
}   
 
# uri包含以下内容时不使用缓存
if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") {
        set $cache_uri 'null cache';
}   
 
# 对登录用户或已发布评论用户不使用缓存
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in") {
        set $cache_uri 'null cache';
}
 
# START MOBILE
# 如果需要在移动端禁用缓存,可以把代码前的#删掉
# if ($http_x_wap_profile) {
#        set $cache_uri 'null cache';
#}
 
#if ($http_profile) {
#        set $cache_uri 'null cache';
#}
 
#if ($http_user_agent ~* (2.0\ MMP|240x320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|iPhone|iPod|Android|BlackBerry9530|LG-TU915\ Obigo|LGE\ VX|webOS|Nokia5800)) {
 #       set $cache_uri 'null cache';
#}
 
#if ($http_user_agent ~* (w3c\ |w3c-|acs-|alav|alca|amoi|audi|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-|dang|doco|eric|hipt|htc_|inno|ipaq|ipod|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-|lg/u|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|palm|pana|pant|phil|play|port|prox|qwap|sage|sams|sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|wap-|wapa|wapi|wapp|wapr|webc|winw|winw|xda\ |xda-)) {
  #      set $cache_uri 'null cache';
#}
#END MOBILE
 
# 如果存在缓存,则使用缓存,如果没有缓存,直接转向动态页面
location /
{
	 try_files /wp-content/cache/supercache/$http_host/$cache_uri/index.html $uri $uri/ /index.php?$args ;
}

rewrite /wp-admin$ $scheme://$host$uri/ permanent;

如图

保存后,去wordpress后台,设置,WP Super Cache 设置里,删除缓存

然后打开网站文件目录中的 wp-content/cache/supercache

哦对了,如果不能生产缓存,看看cache这个文件夹权限够不够755.

看看 wp-content 文件夹中是否有 advanced-cache.php 和 object-cache.php 这两个文件。

再看看WPJAM的系统信息中,Opcache 和 Memcached 是否正常。

最后看看缓存是不是开始慢慢生成了,最后一切不出意外,这个教程就结束了。

 

本站在使用wordpress搭建过程中遇到的坑和填坑记录:https://www.mfpud.com/topics/212/

更多的wordpress的相关内容:https://www.mfpud.com/missfeather/wordpress/

黑苹果动力QQ群:15971419
欢迎赞助一下思羽布丁:https://www.mfpud.com/donations/
陈一发儿的歌曲音乐电台:https://www.missfeather.com/radio/
思羽布丁 » WordPress 使用 WP Super Cache 高级设置中的专家模式下的Nginx规则设置以及优化方案