服务报价 | 域名主机 | 网络营销 | 软件工具| [加入收藏]
 热线电话: #
当前位置: 主页 > php教程 > wordpress教程 >

nginx+wordpress使用wp_super_cache实现全站静态化

时间:2016-04-01 10:08来源:未知 作者:最模板 点击:
很多wordpress博客都是用apach作为前端代理,但是随着nginx的普及,有越来越多的wordpress 博客使用nginx作为前端代理,当用nginx作为前端代理的时候要给wordpress配置wp_super_cache 就需要好好配

很多wordpress博客都是用apach作为前端代理,但是随着nginx的普及,有越来越多的wordpress

博客使用nginx作为前端代理,当用nginx作为前端代理的时候要给wordpress配置wp_super_cache

就需要好好配置一下nginx。本问主要说一下如何在使用nginx作为前端代理的wordpress中使用

wp_super_cache插件。

1.要使用wp_super_cache就要首先保证nginx添加了rewrite规则。现在我首先配置下如何实现wordpress

的伪静态,在nginx安装目录下的conf中有nginx.conf文件,这个文件为nginx的配置文件,我们

在该文件中加入伪静态的rewrite规则,在location / 中加入代码,加完后如下图

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

    #下面为以前就存在的
}

然后在wordpress后台设置中,固定链接设置,直接设置固定链接格式,比如:/%category%/%postname%.html

然后访问所有页面的时候就会在域名后显示成/分类/文章名.html,就实现了wordpress的伪静态。注意这个时候

只是伪静态,所有的文件其实还是有php-fpm动态加载之后传回来的,但是表面上看是静态页面。

2.安装wp_super_cache插件来实现静态页面(真正的静态页面)

首先正常的安装wp_super_cache插件,并在后台插件管理->wp_super_cache->高级 中进行如下设置:

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

勾选 “mod_rewrite缓存模式。”

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

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

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

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

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

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

ok了,这样wp_super_cache就安装成功了,但是现在并不能使用缓存文件。接下来要修改nginx的配置文件来

构造rewrite规则。编辑nginx.cof

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

ok,这个样之后nginx重新加载配置文件,就完成了缓存的设置。

这个时候我们访问我们的博客时,就会生成相应页面的静态缓存也面。具体可以到wp-content/cache/supercache中取查看。

(责任编辑:最模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容