虚位以待(AD)
虚位以待(AD)
首页 > CMS教程 > WordPress > nginx+wordpress使用wp_super_cache实现全站静态化

nginx+wordpress使用wp_super_cache实现全站静态化
类别:WordPress   作者:码皇   来源:互联网   点击:

很多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中取查看。

相关热词搜索: nginx+wordpress使用wp_super_cache实现全