用过wp_super_cache插件的人都知道,它有三种缓存模式:Mod_Rewrite缓存、PHP缓存、传统缓存;其中以Mod_Rewrite缓存最快,但是Mod_Rewrite缓存默认是仅支持apache web服务的,如果我们的服务器是nginx,这就有点麻烦了;
一、网站开启伪静态
wordpress伪静态也非常简单,只需要两步:
1、设置wordpress固定链接;以html的方式结尾;
2、修改nginx配置文件,增加伪静态规则;
- location / {
- root iaccepted.net;
- index index.php index.html index.htm;
- #上面为原先就存在的
- if (-f $request_filename/index.html){
- rewrite (.*) $1/index.html break;
- }
- if (-f $request_filename/index.php) {
- rewrite (.*) $1/index.php;
- }
- if (!-f $request_filename){
- rewrite (.*) /index.php;
- }
- #下面为以前就存在的
- }
二、安装并开启了wp_super_cache;选择“Mod_Rewrite缓存”;
在后台插件管理->wp_super_cache->高级 中进行如下设置:
勾选 “启用缓存以变加快访问。”
勾选 “mod_rewrite缓存模式。”
勾选 “缓存重建以。当新缓存生成时调用缓存文件给匿名用户。”
勾选 “Mobile device support.” 也就“是移动设备支持”
勾选 “当有新文章或页面的发布或更新时清楚之前的缓存文件。”
勾选 “当页面有新评论时,只刷新该页面缓存。”
注意:只要是后面有“推荐”两个字的都可以选择;其它插件开启默认打上勾的我们可以不用理会;
由于垃圾收集器检查缓存并对过期缓存的重建过程非常耗费内存,建议直接把缓存超时时间设为0,这样就能禁用垃圾收集器
从而不会耗费太多内存,然后可以设置每天某个时间点清空缓存。
三、修改nginx的配置文件;增加wp_super_cache规则,并重启nginx
在server {}添加以下规则;
- #设置缓存
- #是否缓存
- set $supercache 1;
- set $cache_uri $request_uri;
- #是否是移动端
- set $ifmobile '';
- #如果是post请求,默认不从缓存读取
- if ($request_method = POST)
- {
- set $supercache 0;
- }
- #如果请求参数不为空,则不存缓存读取
- if ($query_string != "")
- {
- set $supercache 0;
- }
- #后台的一些操作不从缓存读取
- 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 $supercache 0;
- }
- #看下是否为移动端发来的请求,以区分缓存内容,因为尺寸不一样
- if ($http_user_agent ~* '(iphone|ipod|aspen|incognito|webmate|android|dream|cupcake|froyo|blackberry9500|blackberry9520|blackberry9530|blackberry9550|blackberry 9800|webos|s8000|bada)')
- {
- set $ifmobile '-mobile';
- }
- #如果不从缓存读取,那么就设置缓存的uri为空
- if ($supercache = 0)
- {
- set $cache_uri '';
- }
- #如果使用缓存,就要拼装出缓存路径
- if ($cache_uri ~ ^(.+)$)
- {
- set $cache_file /wp-content/cache/supercache/$http_host$1/index${ifmobile}.html;
- }
- #rewrite,若存在该缓存文件,则直接静态读取,并结束下面的一系列匹配
- if (-f $document_root$cache_file)
- {
- rewrite ^ $cache_file last;
- }
注意事项:
虽然说,现在wordpress+nginx+wp_super_cache插件开启Mod_Rewrite实现整站缓存纯静态化已经成功,但是可能你设置WP Super Cache的时候会出现以下几种提示:
1、Mod rewrite 模块可能未安装!
貌似 mod_rewrite 模块尚未安装。也许情况并不是这样,尤其是当您不使用 Apache 作为服务器程序的时候。请检查 mod_rewrite 模块是否被加载。这对于 Super Cache 的静态文件的调用是必需的。不过您可以使用 PHP 缓存模式或者传统模式运行本插件
2、警告! /fujieace/nginxssl/html/wp-content 可被写入!
您应该通过 ftp 客户端或者以下命令更改 /fujieace/nginxssl/html/wp-content 的权限并确保它被严格限制: chmod 755 /fujieace/nginxssl/html/wp-content/
这个页面 讲述了如何修改文件权限。
3、注意:由于 Mod_rewrite 模式或者传统模式已启用,默认将显示高级设置选项卡。
4、注意:除非运行在 主站点,WP Super Cache 的 mod_rewrite 规则检查功能将被禁用 。
解决办法就是:
以上这些提示并没有任何的影响,因此我们不用理会;当然网上也有一些设置可以不让它显示,主要都是为了有强迫症的人着想,请自行百度搜索;
2018年09月13日 11:50:20 沙发
iis下面不知道能否隐藏开启后的那 2个提示。
2018年09月13日 23:09:51 1层
@webkv 能否说具体点?
2017年08月10日 01:03:59 板凳
这缓成还是不错的,现在博客完全可以秒开!