在wordpress之前,我用的是oblog,一个asp的多用户blog程序,它的静态化不错,虽然也还不是最完美.
wordpress有wp-cache, wp-super-cache, hyper-cache, cos-html-cache, 1 blog cacher, 效果也都可以, 但总体来说仍然十分粗糙.
那么完美的静态化插件应该是什么样的?我想它应该符合一些条件.
1. 能够生成静态文件,并且显示样式应该与之前一样.
1. 可预生成, 也可第一次访问时生成
2. 做到0数据库访问,最好做到0php处理,只由apache处理,在数据库宕机情况下仍能访问
3. 能够生成html文件
4. 支持gzip时生成gz文件
5. 可配置浏览器缓存, 如过期时间
6. 确认生成静态页是否成功, 如判断源码中是否包含</html>, 以防生成包含错误代码的静态页面
2. 支持wordpress mu
1. 可以分站点缓存,按站点域名存放
2. 按URL路径放置,方便管理
3. 可配置允许不同站点使用同一套缓存文件, 原因是多个不同域名可能指向同一个站点
4. 能够列出所有缓存文件,能够分站点列出,限制用户可见范围
5. 可改写.htaccess文件使得在没有php情形下找到正确缓存文件
6. 作为mu插件,只能管理员可见. 为方便用户定制, 应该通过权限判断给出适合用户定制的选项页面
3. 对动态内容的处理
1. 一般处理方法为为匿名用户返回缓存, 为登录用户禁止缓存
2. 尝试使用服务端包含机制(SSI, Server Side Include), 即生成shtml的方式, 将动态部分如侧边栏,评论,数据统计部分作为子页面被生成的静态页包含,最终做到静态页完全不受动态数据影响
3. 如果服务器不支持SSI,可使用ajax方式引用动态部分的小静态页,从而仍然做到原静态页不受影响
4. 创建,更新和删除
1. 可定期清理缓存文件, 可禁止清理缓存文件(永不过期)
2. 能够列出符合条件的缓存文件,如超过180日的缓存文件
3. 采用SSI时,原动态页面被缓存部分能够手工更新
4. 可局部生成或重建和删除, 可按站点生成, 可选按postid, postname, permailink, 或通过查询条件选出后, 勾选再执行.按postid执行时,可选区间
5. 批量生成或删除时可选一次多少页后暂停多长时间, 以此来限制CPU使用率, 而免于被停机
6. 多种更新触发机制, 可选发文,评论,更新模板触发, 后台手工触发等
5. 对某些情形不使用缓存或永远缓存
1. 对某些范式不使用缓存.如wp-*.php之类
2. 对某些页永远使用缓存, 如openid配置文件, 关于页等
3. 对某些情形不使用缓存, 如搜索引擎(特殊user-agent值), feed等
6. 支持gzip
7. 方便调试, 方便确认效果, 如在页面源码中添加特殊字符
8. 以上条件都有开关选项以方便定制
因此按以上要求看来,现在还没有一个插件是完美的,希望作者们再接再厉.