很多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中取查看。 (责任编辑:好模板) |


网络公司整站全静态生成
人气:635
ecshop 抽奖插件
人气:2222
Luxury高端时尚magento主题模
人气:116
ecshop易趣英文外贸模板
人气:1288
ecshop高仿乐淘网上鞋城模
人气:1223
ecshop仿美乐乐家具商城模
人气:1726