wordpress+nginx+wp_super_cache插件开启Mod_Rewrite实现整站缓存纯静态化方法

用过wp_super_cache插件的人都知道,它有三种缓存模式:Mod_Rewrite缓存、PHP缓存、传统缓存;其中以Mod_Rewrite缓存最快,但是Mod_Rewrite缓存默认是仅支持apache web服务的,如果我们的服务器是nginx,这就有点麻烦了;

 

一、网站开启伪静态

wordpress伪静态也非常简单,只需要两步:

 

1、设置wordpress固定链接;以html的方式结尾;

wordpress固定链接

 

2、修改nginx配置文件,增加伪静态规则;

  1. location / {
  2.     root iaccepted.net;
  3.     index index.php index.html index.htm;
  4.     #上面为原先就存在的
  5.     if (-f $request_filename/index.html){
  6.         rewrite (.*) $1/index.html break;
  7.     }
  8.     if (-f $request_filename/index.php) {
  9.         rewrite (.*) $1/index.php;
  10.     }
  11.     if (!-f $request_filename){
  12.         rewrite (.*) /index.php;
  13.     }
  14.     #下面为以前就存在的
  15. }

 

二、安装并开启了wp_super_cache;选择“Mod_Rewrite缓存”;

在后台插件管理->wp_super_cache->高级 中进行如下设置:

勾选 “启用缓存以变加快访问。”

勾选 “mod_rewrite缓存模式。”

勾选 “缓存重建以。当新缓存生成时调用缓存文件给匿名用户。”

勾选 “Mobile device support.” 也就“是移动设备支持”

勾选 “当有新文章或页面的发布或更新时清楚之前的缓存文件。”

勾选 “当页面有新评论时,只刷新该页面缓存。”

wp_super_cache “Mod_Rewrite缓存”

注意:只要是后面有“推荐”两个字的都可以选择;其它插件开启默认打上勾的我们可以不用理会;

 

由于垃圾收集器检查缓存并对过期缓存的重建过程非常耗费内存,建议直接把缓存超时时间设为0,这样就能禁用垃圾收集器

从而不会耗费太多内存,然后可以设置每天某个时间点清空缓存。

wp-super-cache到期时间和垃圾回收器

 

三、修改nginx的配置文件;增加wp_super_cache规则,并重启nginx

在server {}添加以下规则;

  1. #设置缓存
  2. #是否缓存
  3. set $supercache 1;
  4. set $cache_uri $request_uri;
  5. #是否是移动端
  6. set $ifmobile '';
  7. #如果是post请求,默认不从缓存读取
  8. if ($request_method = POST)
  9. {
  10.     set $supercache 0;
  11. }
  12. #如果请求参数不为空,则不存缓存读取
  13. if ($query_string != "")
  14. {
  15.     set $supercache 0;
  16. }
  17. #后台的一些操作不从缓存读取
  18. 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)")
  19. {
  20.     set $supercache 0;
  21. }
  22. #看下是否为移动端发来的请求,以区分缓存内容,因为尺寸不一样
  23. if ($http_user_agent ~* '(iphone|ipod|aspen|incognito|webmate|android|dream|cupcake|froyo|blackberry9500|blackberry9520|blackberry9530|blackberry9550|blackberry 9800|webos|s8000|bada)')
  24. {
  25.     set $ifmobile '-mobile';
  26. }
  27. #如果不从缓存读取,那么就设置缓存的uri为空
  28. if ($supercache = 0)
  29. {
  30.     set $cache_uri '';
  31. }
  32. #如果使用缓存,就要拼装出缓存路径
  33. if ($cache_uri ~ ^(.+)$)
  34. {
  35.     set $cache_file /wp-content/cache/supercache/$http_host$1/index${ifmobile}.html;
  36. }
  37. #rewrite,若存在该缓存文件,则直接静态读取,并结束下面的一系列匹配
  38. if (-f $document_root$cache_file)
  39. {
  40.     rewrite ^ $cache_file last;
  41. }

 

注意事项:

虽然说,现在wordpress+nginx+wp_super_cache插件开启Mod_Rewrite实现整站缓存纯静态化已经成功,但是可能你设置WP Super Cache的时候会出现以下几种提示:

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 规则检查功能将被禁用 。

 

解决办法就是:

以上这些提示并没有任何的影响,因此我们不用理会;当然网上也有一些设置可以不让它显示,主要都是为了有强迫症的人着想,请自行百度搜索;

    A+
发布日期:2017年06月28日 20:24:04  所属分类:WordPress
最后更新时间:2017-06-28 20:34:28
付杰
  • ¥ 59.0元
  • 市场价:99.0元
  • ¥ 59.8元
  • 市场价:99.8元
  • ¥ 39.0元
  • 市场价:39.0元
  • ¥ 58.0元
  • 市场价:58.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:3   其中:访客  0   博主  0

  1. 头像 webkv 1

    iis下面不知道能否隐藏开启后的那 2个提示。

  2. 头像 泛泛 1

    这缓成还是不错的,现在博客完全可以秒开!