Super Static Cache: WordPress高级纯静态插件

 分类: PHP

作者已经开发出来了更适合SEO网站的类Wordpress的内容管理系统Domai CMS, 目前不在使用wordpress, Super Static Cache将停止维护,博客也会抽空迁移到Domai CMS系统上

Super Static Cache是一款WordPress缓存插件,旨在给使用WP的网站提供配置简单,缓存效率高,通用性强的解决方案。

目前国内WP的缓存插件中,Wp super cache和cos-html-cache可能是最为众人所熟知的缓存产品,但是这两个插件各有优缺点。

Wp super cache最著名的wordpress缓存插件之一,它是一款高级插件,能够根据需要作出很多配置,还能自动设置缓存过期时间,在大多数情况下都非常实用。但是一但数据量多大,就可能因为不合理的设置导致服务器压力过大,出现网站反应速度慢,打不开等情况。Super Static Cache在大多数情况下可以替换它。

cos-html-cache是国人开发的一款wordpress纯静态化插件,会自动生成文静态文档,下次访问会直接通过web服务器而不是php,总体表现良好,但是它对固定链接的要求非常高,必须是带有.html的后缀才能被缓存,而且只有一种缓存模式,所有缓存文件和程序文件混在在一起,非常难于管理。Super Static Cache可以完全替代cos-html-cache。

Super Static Cache集合wp super cache和cos-html-cache的特点,安装配置简单,缓存效率高,有良好的交互,有Direct,PHP和Rewrite三种模式,还能根据需要设置不缓存的页面。

Super Static Cache最新版界面

Super Static Cache最新版界面

安装方法:把super-static-cache上传到wordpress的插件目录,“wp-content/plugins/”,在后台的插件管理中激活super static cache,然后进入设置->Super Static Cache中启用,选择插件的运行方式(默认为关闭状态),然后升级您的固定链接格式。

最新版本下载地址

1,插件已经被wordpress收录,去wordpress下载
2,在后台插件安装界面直接搜索Super Static Cache下载安装
3,去Github上下载,欢迎为super static cache pull requests.

FAQ

1, 缓存的加载速度快不快?
缓存好之后,下次访问次文章时,web服务器会直接访问这个缓存文件(Direct模式和Rewrite模式),并不通过wordpress,也不会查询数据库,这样节省了很多资源。即使这样,加载速度也会和您的服务器有关系。

2, 直接缓存和重写缓存有什么区别?
直接缓存会根据固定连接的设置,把缓存文件直接存放在wordpress安装目录下,如果页面较多的话,会导致wordpress程序文件和缓存文件混在一起,重写缓存就是专门建立一个缓存存放目录(super-static-cache)来存在这些缓存文件。当然,必须要升级网站的rewrite规则。

3,super static cache适用于哪些场合?
super static cache的诞生起初是为了满足我个人的工作需要,和其它缓存插件一样,有自己适用的场合。 如果你的网站内容很多,访问量大,数据库服务器压力巨大,但是磁盘空间充足,可以选择super static cache,反过来,如果您的网站内容少,流量低,更新频繁,不推荐使用super static cache。

4, 如何清除缓存文件?
最新版本的高级设置里有根据缓存类型清理缓存的选项,如果你需要清理所有缓存,直接选择所有(ALL),然后点击清理按钮即可。需要注意的是,由于服务器环境,权限配置等一些因素,可能导致缓存清理不完的情况,如遇到这种情况,请给我留言。

5, 新增的PHP模式有何特点?
PHP模式是3.0版本中新增的缓存模式,相对其它两种模式,它是最耗费资源的模式,因为这种缓存模式还是需要数据库的支撑,这就意味着如果数据库宕机,网站是打不开的,PHP模式只是减少了数据库的查询次数。它的优点是兼容部分插件。

6, 严格缓存模式和非严格缓存模式是什么?
严格模式和非严格模式仅针对Direct模式,它要解决的是关于URL的问题,严格模式下,类似www.example.com/archives/1这种url是不能被缓存的,非严格模式下,这类的url会被缓存,但是第二次访问服务器一般会重定向到www.example.com/archives/1/(注意后面的斜杠)。如果你使用PHP模式或者Rewrite模式,忽略这项配置即可。

7, 为什么缓存成功之后,搜索功能不能用了?
搜索功能不能使用是因为搜索表单的目标地址地址是”/”, 而”/”指向的是目录index,很多服务器的index.html的优先级比index.php高,所以操作搜索功能失效。解决办法: a, 把搜索的目标地址改成”/index.php”(或者WP相应安装目录的index.php)。b, 关闭首页缓存。c, 使用Rewrite缓存模式。

8, Super Static Cache Spider是什么?
当内容更新时,Super Static Cache会自动建立缓存,Super Static Cache Spider是自动建立缓存的爬行蜘蛛,php开启curl扩展,日志中才能看到Super Static Cache Spider的爬行轨迹,它的来源IP为您的服务器或者CDN提供商的IP地址。Super Static Cache Spider只会内容作出更新时爬行。

9, 为什么访问会出现403错误或者返回目录的index?
当使用Direct模式,并且固定链接含有多级目录设置,如/%year%/%monthnum%/%day%/%postname%/时,网站的文章的url是类似www.example.com/2015/03/02/hellow-world/,当缓存生成之后,访问www.example.com/2015/03/02/,www.example.com/2015/03/等时要么返回403(web服务器没有开启autoindex时),要么返回相应目录的index(web服务器开启autoindex时)。如果你的网站的固定链接是类似上面这种深层次的,推荐使用Rewrite模式,可以避免此问题发生。

10, 伪静态规则怎么添加?
当使用Rewrite模式时,需要往web服务器上添加伪静态规则,伪静态规则的生成办法是,选中rewrite模式,点击升级,系统会自动生成伪静态规则(暂时只支持apache和nginx)。对于apache,要把生成的伪静态规则添加到网站的.htaccess或httpd.conf里;对于nginx,则需要把伪静态规则添加到相应配置的server字段里。添加时,注意要把这个伪静态规则添加到所有伪静态规则的之前。添加之后,再次点击升级,如果提示消失,则表明规则添加正确。

11, nginx上为什么会提示location Duplicate(location字段重复)?
Nginx一个路径只支持一个location,如果在添加Super Static Cache之前,你的Nginx有和插件系统的伪静态规则一样的location,把两个伪静态合并到一起,然后添加到服务器。注意保持插件的伪静态规则在前面。

12, 为什么我在后台发布文章,缓存可以更新,用工具采集,缓存就不能更新?
Super Static Cache缓存建立的原理是根据系统的动作,在后台发布文章时,系统能够监测到相关动作并建立缓存,如果直接把数据插入到数据库,系统会因为监测不到动作也不能建立缓存。如果你的网站使用工具进行采集,推荐在设置页面取消首页缓存,或者使用crontab等工具定期更新首页缓存。

13, 我想指定单个不被缓存的页面
在3.3.1版本中加入了指定单个不需要缓存页面的功能,直接在此处填入不想要缓存的页面网址即可,一行一个。

14, 我的服务器网站多,单个网站内容也多,能否支持缓存压缩?
由于某些网站内容较多,庞大的缓存页面占据较多的硬盘空间,所以Super Static Cache在最新的3.3.4版本中开始支持对缓存文件进行压缩,目前支持apache和nginx服务器,nginx的支持程度更高一些,要使其工作正常,nginx必须安装ngx_http_gzip_static_modulengx_http_gunzip_module两个模板,apache必须安装mod_headers模块,缓存模式须为rewrite模式或者php模式。

15, 缓存压缩能节省多少空间?
插件采用gzip压缩库,详细信息可访问http://www.gzip.org/,一般情况下看来,节省50%以上的空间是没有问题的。

更新日志

1,安装卸载时报Notice,已修复,感谢@camson反馈
2,使用部分主题时,用户登陆时和不登陆前台界面不一样导致缓存不相同,已修复
3,已升级致2.0.0,功能:a.支持rewrite模式,如果选择,系统会在WP的安装目录下创建一个super-static-cache目录,会把所有缓存放到这个目录里,开启这个功能需要升级rewirte规则。b.英语管理后台的支持。c.bug的修复。d.文章发布会自动构建缓存。e.文章更改也会自动构建缓存。f.文章删除会自动删除缓存。
4,2.0.1: 优化nginx下选择rewrite模式的rewrite规则。
5,2.0.2: 增加url中含有多字节字符的缓存支持(由于windows服务器不同语种使用各不一样的字符集编码,所以暂不支持windows服务器的多字节缓存支持)
6,3.0:2015年1月26日更新。增加PHP缓存模式,增加tag,category页面自动更新功能,增加严格与非严格缓存模式, 优化删除缓存功能,bug修复。
7,3.2:2015年8月14日更新。修复之前bug,后台管理界面更新,增加多项功能: a, 用户可以根据需求设置缓存自动建立/重建的时机。 b, 清理缓存更新洗化,用户可根据需求清理指定的缓存。
8,3.3.1:2016年4月19日更新。增加指定不缓存单个页面的功能。
9, 3.3.4:2017年5月17日更新。增加缓存压缩功能,对于文章较多的网站能够节省50%以上的空间。

发表回复

评论列表:

石头
石头
牛逼
回复此留言
qiuyuec
qiuyuec
大佬写的插件就是nb,过了这么多年还能用
回复此留言
kiopc
kiopc
为什么搜索不博主开发cms系统啊?是不是更名了?
Hito
Hito
感谢关注,本人已经开发一个类WP的CMS,Super Static Cache不在维护。
Geticer
Geticer
如何只对未登录的用户展示缓存的静态页面? 或者,如何不对已登录的用户展示缓存的静态页面?
回复此留言
Hito
Hito
感谢关注,本人已经开发一个类WP的CMS,Super Static Cache不在维护。
Geticer
Geticer
如何只对未登录的用户展示缓存的静态页面? 或者,如何不对已登录的用户展示缓存的静态页面?
回复此留言
Geticer
Geticer
如何只对未登录的用户展示缓存的静态页面? 或者,如何不对已登录的用户展示缓存的静态页面?
回复此留言
test
test
卸载之后再安装,后台就一直提示没有更新伪静态规则。 因为第一次安装之后发现不能登录,就卸载了。 然后再外面找到别人写的可以登录的规则: if ($args !~ ".*=.*"){ set $ssc "${ssc}Y"; } if ($http_cookie !~ "wordpress_logged_in.*"){ set $ssc "${ssc}Y"; } 放到伪静态之后,然后再安装插件。 就一直提示没有更新规则,各种重启都没用。 删掉另外加的规则,也还是提示没有更新。
回复此留言
河枯
河枯
我这边一直提示 缓存功能没有开启 我都重新装了 wp super cache 但是还是提醒 没有开启缓存 而且每次我打开 super-static-cache 的配置页面都会卡上10分钟左右 前台页面 全部卡死 之后才恢复 Nginx的伪静态我也配置了
回复此留言
max
max
设置按钮点后为什么无法使用,一直转
回复此留言
Learningman
Learningman
请问能不能兼容一下Auto optimize,缓存时也聚合Auto Optimize生成的cache js css
回复此留言
Hito
Hito
感谢使用,插件会在设置的情况下,在评论通过时更新缓存,视服务器配置和网络速度,有时会出现等待时间较长。第二个问题如果想让登陆用户不读取缓存,可通过伪静态记录实现,具体请看以前的留言。
kiss
kiss
使用贵插件速度非常的牛逼。但仍有二点疑问。希望博主解惑,感谢! 一,使用Rewrite模式 (推荐),评论在提交的时候非常慢,可能是要重建页面,这个时间有点久。 二,用户登陆以后,点击一个页面就变成未登陆状态了。因为这是一个完全静态的页面。请教下如何综合处理下这两个问题呢?感谢!
回复此留言
kiss
kiss
使用贵插件速度非常的牛逼。但仍有二点疑问。希望博主解惑,感谢! 一,使用Rewrite模式 (推荐),评论在提交的时候非常慢,可能是要重建页面,这个时间有点久。 二,用户登陆以后,点击一个页面就变成未登陆状态了。因为这是一个完全静态的页面。请教下如何综合处理下这两个问题呢?感谢!
回复此留言
Hito
Hito
感谢使用和回复,关于第一个问题,是因为考虑到某些情况下用户需要回源访问,例如搜索,所以设置带查询的都直接回源了,如不需要可以在伪静态规则中去掉相应规则即可。 关于第二个问题,我最近也注意到了,我会抽时间完善改进的,谢谢!
zlsin
zlsin
博主,有个问题不知道算不算bug,就是访问像https://www.hitoy.org/super-static-cache-for-wordperss.html?dir=wp-content(以本站为例)这种连接会直接回源访问服务器,访问首页https://www.hitoy.org/?dir=wp-content首页底部页码连接就会被改变为https://www.hitoy.org/page/2?dir=wp-content有时会被插件缓存为首页,底部页码连接就一直显示为https://www.hitoy.org/page/2(可以是任意存在页码)?dir=wp-content,导致访客点击也无法访问下一页了
回复此留言