插件已经写完,花了两个多小时。主要是思路没理清楚,然后又得熟悉Typecho的代码结构。。。
主要实现了类似smarty的数据静态化功能,就是根据url,确切地说是pathinfo来判断是否需要缓存。这个在后台可以设置,选择想缓存的项目。
兼容Mysql模式与新浪SAE memcache模式。自由选择。
思路:在index.php 的begin 插件挂接点加入判断,看看当前的URL是不是后台设置了需要缓存的,如果是需要缓存的页面,则直接在缓存池(mysql或内存)找与该url hash对应的缓存数据。找到,直接echo输出,终止整个Typecho程序;找不到,加个全局的nocache的变量作为标志,然后在index.php 的end挂接点获取全部的缓冲数据(也就等同于整个输送到客户端浏览器的网页数据)然后按照缓存hash存入相应的储存介质中。供后续使用。
缓存有生命时间,用户可以在后台设置。比如缓存1小时或12小时等等。
目前仍未加入的功能是发布文章、发评论时自动更新缓存功能。明天看看有没有时间加上一并发布。
CK插件之数据缓存:实现类似smarty的静态数据缓存
版主: woniou
-
- 帖子: 20
- 注册时间: 2010年 6月 24日 05:31
- 联系:
Re: CK插件之数据缓存:实现类似smarty的静态数据缓存
更新:
12/16 已经增加评论自动更新。这两天因为亲戚喜事,没有时间更新。等周末把SAE兼容也测试一遍就放出来。
12、17 经过自己的两个SAE站已经本地localhost站测试,基本没发现问题。现放出请需要的哥们测试测试。
----------------------------------------------------------------------------------------------
话说,个人觉得,这个缓存插件对于大流量的blog才有意义,一般私人blog是用处不大的。
使用该插件相当于把或许后续的页面数据查询、处理过程全省掉了。理论上是比较接近静态化了。虽然并没有真的生成html缓存文件,但是也比较高效了——特别是SAE版本,因为整个页面数据本身就存在主机的内存当中了,速度应该是比刘翔要快得多了
注意:第一个附件是对的,第二个是错的。bbpress附件居然不能删除?!请选择第一个下载。
12/16 已经增加评论自动更新。这两天因为亲戚喜事,没有时间更新。等周末把SAE兼容也测试一遍就放出来。
12、17 经过自己的两个SAE站已经本地localhost站测试,基本没发现问题。现放出请需要的哥们测试测试。
----------------------------------------------------------------------------------------------
话说,个人觉得,这个缓存插件对于大流量的blog才有意义,一般私人blog是用处不大的。
使用该插件相当于把或许后续的页面数据查询、处理过程全省掉了。理论上是比较接近静态化了。虽然并没有真的生成html缓存文件,但是也比较高效了——特别是SAE版本,因为整个页面数据本身就存在主机的内存当中了,速度应该是比刘翔要快得多了
注意:第一个附件是对的,第二个是错的。bbpress附件居然不能删除?!请选择第一个下载。
-
- 帖子: 182
- 注册时间: 2011年 11月 19日 11:43
- 联系:
Re: CK插件之数据缓存:实现类似smarty的静态数据缓存
楼主的想法不错,尤其对于SAE上数据库请求都需要计费,这样会降低许多云豆消耗
期待杰作
期待杰作
Re: CK插件之数据缓存:实现类似smarty的静态数据缓存
数据缓存了,会不会影响插件的运行?
Re: CK插件之数据缓存:实现类似smarty的静态数据缓存
额,想法很不错啊,话说,前几天刚看到楼主的帖子,今天就有工具发出来了,真速度……
-
- 帖子: 20
- 注册时间: 2010年 6月 24日 05:31
- 联系:
Re: CK插件之数据缓存:实现类似smarty的静态数据缓存
@DEFE 这个不会。因为缓存的对象是经过插件运行后生成的页面数据。因为插件分为两种:页面输出前运行的插件,页面输出后(客户端浏览器)运行的插件。
第一种(服务器端)插件:有一部分是每次参与页面生成时都会得出不同结果的,例如:文章计数器,每一次访问文章页面,计数结果都要加1,这一类插件会被本缓存插件影响。而每次参与页面内容生成时得出结果基本一致(如标题图生成插件)的那些插件则不会受影响。
第二种(客户端)插件:这些插件都是达到客户端浏览器后才其作用的。比如,评论框表情插件,ajaxComment等,还有就是页面特效插件之类的。这些插件与缓存插件无关。因为内容是服务器生成的。
目前我自己想到的受影响的大概就是计数器插件。所以我已经在插件中加上了“缓存模式”下的计数器功能了。
第一种(服务器端)插件:有一部分是每次参与页面生成时都会得出不同结果的,例如:文章计数器,每一次访问文章页面,计数结果都要加1,这一类插件会被本缓存插件影响。而每次参与页面内容生成时得出结果基本一致(如标题图生成插件)的那些插件则不会受影响。
第二种(客户端)插件:这些插件都是达到客户端浏览器后才其作用的。比如,评论框表情插件,ajaxComment等,还有就是页面特效插件之类的。这些插件与缓存插件无关。因为内容是服务器生成的。
目前我自己想到的受影响的大概就是计数器插件。所以我已经在插件中加上了“缓存模式”下的计数器功能了。
Re: CK插件之数据缓存:实现类似smarty的静态数据缓存
我也期待中,估计我倒是用不上了,我就是楼主所说的小流量,现在是,将来也是,哈哈!