Loading...

wp-ext-cache

Filed under: Wordpress,网站技术 — 江东 @ 2009-04-06 10:31:49 才(24)条评论

那些梦想全站缓存的朋友,现在cosbeta将这个beta版本的wp-ext-cache外挂(不叫插件,看看后面的用法介绍就知道了)推出来给你们试用了。

插播废话:实话实说,需要全站缓存的个人blog很少,除非你的日IP达到5000以上你才有必要正二八经的考虑用这个工具(改造起来有一点麻烦,特别提醒浮躁人士,请一定按部就班的操作)。

wp-ext-cache介绍

wp-ext-cache,从命名上可以看出,该缓存属于外部缓存,配合插件,达到最大的缓存作用,若您网站的访问量不是很大,可以单独安装cos-html-cache.不建议单独使用wp-ext-cache,单独使用只能定时更新缓存。

将wp-ext-cache和cos-html-cache(从本文下载改造后的cos-html-cache)一起配合使用,配合之后的特点如下:

  1. 可以缓存非html结尾的的post;
  2. 发布日志、编辑日志、删除日志、评论产生、评论删除这些事件将触发首页和single post缓存的更新,因此可以说此插件更新内容接近实时状态;
  3. 若post页面的url非html结尾,那么在上述条件下触发缓存更新的同时,post页面也支持自动定时缓存更新;
  4. 可以缓存全站,缓存定期更新,默认定期更新时间为5分钟(所以对于访问量不大的blog,blog的每个页面的绝对达不到5分钟就被访问一次,假设你的blog有100个常用页面,若是5分钟就平均有一个页面被访问,那么日访问量将会是100/5*60*24=28000);
  5. 可以设定缓存更新时间,时间紧张,未做到wp的后台,只能在php文件中直接修改;
  6. 不缓存feed页面,不缓存404页面,防止蜘蛛疯狂抓取404(请保证wordpress模板文件中存在文件404.php,并且内容有Error 404字符),导致服务器上过多的垃圾缓存文件;

wp-ext-cache安装方法

使用方法(由于是外挂而不是插件,所以请做好心理准备):

  1. 下载这三个文件cos-html-cache.zip  index.zip  wp-ext-cache.zip
  2. 像安装普通插件一样安装cos-html-cache,若不想缓存首页,请打开cos-html-cache.php 修改define(‘IS_INDEX’,false); false表示不缓存首页,反之则缓存;
  3. cos-html-cache修改的参数有2行:

    define(‘IS_INDEX’,false);// fasle表示首页不生成html缓存(意味着可以php缓存) true则反之(优先级最高)

    define(‘IS_HTML_CACHE’,true);// false表示不创建html文件(不创建的原因在于你的html路径冲突,或者服务器就不支持建立html文件)

  4. 将wp-ext-cache文件夹放置在wordpress根目录下
  5. 将wp-ext-cache的cache文件夹属性设置成0777;
  6. 备份好原来wordpress的index.php用下载下来的index.php覆盖之;
  7. 非html缓存的失效时间在wp-ext-cache/ext_cache_cfg.php中 ,修改define(‘WP_EXT_CACHE_TIME’,600); 600表示600秒之后,其他非html文件缓存自动被更新。

其他注意事项

搞定,任意打开一个页面,看html源代码便可确认是否缓存。

注意:若不想缓存404页面,请一定在当前theme目录下创建一个404.php文件,并且文件内容中包含Error 404。

全站缓存,高于任何一款基于文件缓存的插件,只有绕过插件机制,才能如此,所以,才会有得如此多的步骤。

对于那些需要手动更新缓存的建议,可以在留言中提出来。某些缓存更新的请仔细再仔细思考一下,因为它可能是不必须的。

补充:缓存肯定会导致及时更新的问题,若是开启了html缓存,评论框的处理会更加理想

新的wordpress缓存思想

Filed under: Wordpress,网站技术 — 江东 @ 2009-04-04 22:17:05 才(15)条评论

以前的一篇日志中,cosbeta认为,凡是插件级(cos-html-cache除外)的缓存都不会有多大的效果,毕竟他们都无法绕过wordpress的预处理。不相信的话,可以做一个实验,在一个页面已经缓存的情况下,修改wp-config.php文件,故意将数据路的信息修改成错误的信息,然后刷新缓存的页面,若该页面依然正常,那么此缓存则效率很高,否则,缓存效果并不明显。

所以,今天晚上cosbeta想到一种新的思路,那就是对wordpress做外部缓存。

配合cos-html-cache使用,此外部缓存仅仅缓存非post页面,缓存的方式如下(仅仅针对非single post页面):

  1. 检查页面html中是否有cos-html-cache的缓存flag”<!–cos-html-cache-safe-tag—>”,有则将缓冲区文件写入缓存,否则利用cos-html-cache缓存;
  2. 访问wordpress的时候,检查缓存是否存在或者过期(不会通过插件机制检查,因此若缓存被引用,即使数据库关闭,页面依然正常),若过期则写入新的缓存,否则,直接调用缓存文件;

这样便可实现wordpress的全站缓存,这样的缓存有什么作用,下面我做一个计算:

假设blog的访问量是1w+,非静态化文件访问是1000;

未缓存:按照wordpress的数据库使用情况看来,一天数据库查询绝不少于30000次;

使用缓存:(假设缓存时间为5分钟):一天数据库查询的次数则为 24*60/5 = 288次;

由于single post依然采用cos-html-cache,因此对于评论之类的实时显示毫无影响。

今晚找可能吧和我自己的blog做小白鼠,测试一下。

本站html之外的文件也都缓存,欢迎大家查看(不是.html结尾的页面)源代码,代码最后一行会显示缓存生成的时间。

补充说明:这个插件其实没有那么高深,要不是CPH出错报告关闭了的话,10分钟便可搞定(多亏PEAR)。关键是测试,看看有没有想想不周到的地方。