CK插件之数据缓存:实现类似smarty的静态数据缓存

插件开发及发布

版主: woniou

captainkoo
帖子: 20
注册时间: 2010年 6月 24日 05:31
联系:

CK插件之数据缓存:实现类似smarty的静态数据缓存

帖子 captainkoo »

插件已经写完,花了两个多小时。主要是思路没理清楚,然后又得熟悉Typecho的代码结构。。。

主要实现了类似smarty的数据静态化功能,就是根据url,确切地说是pathinfo来判断是否需要缓存。这个在后台可以设置,选择想缓存的项目。

兼容Mysql模式与新浪SAE memcache模式。自由选择。

思路:在index.php 的begin 插件挂接点加入判断,看看当前的URL是不是后台设置了需要缓存的,如果是需要缓存的页面,则直接在缓存池(mysql或内存)找与该url hash对应的缓存数据。找到,直接echo输出,终止整个Typecho程序;找不到,加个全局的nocache的变量作为标志,然后在index.php 的end挂接点获取全部的缓冲数据(也就等同于整个输送到客户端浏览器的网页数据)然后按照缓存hash存入相应的储存介质中。供后续使用。

缓存有生命时间,用户可以在后台设置。比如缓存1小时或12小时等等。

目前仍未加入的功能是发布文章、发评论时自动更新缓存功能。明天看看有没有时间加上一并发布。
captainkoo
帖子: 20
注册时间: 2010年 6月 24日 05:31
联系:

Re: CK插件之数据缓存:实现类似smarty的静态数据缓存

帖子 captainkoo »

更新:
12/16 已经增加评论自动更新。这两天因为亲戚喜事,没有时间更新。等周末把SAE兼容也测试一遍就放出来。
12、17 经过自己的两个SAE站已经本地localhost站测试,基本没发现问题。现放出请需要的哥们测试测试。

----------------------------------------------------------------------------------------------

话说,个人觉得,这个缓存插件对于大流量的blog才有意义,一般私人blog是用处不大的。

使用该插件相当于把或许后续的页面数据查询、处理过程全省掉了。理论上是比较接近静态化了。虽然并没有真的生成html缓存文件,但是也比较高效了——特别是SAE版本,因为整个页面数据本身就存在主机的内存当中了,速度应该是比刘翔要快得多了


注意:第一个附件是对的,第二个是错的。bbpress附件居然不能删除?!请选择第一个下载。
mybg
帖子: 508
注册时间: 2010年 5月 27日 16:20
联系:

Re: CK插件之数据缓存:实现类似smarty的静态数据缓存

帖子 mybg »

占位
boyuandingchen
帖子: 182
注册时间: 2011年 11月 19日 11:43
联系:

Re: CK插件之数据缓存:实现类似smarty的静态数据缓存

帖子 boyuandingchen »

深夜支持。
zuobq
帖子: 60
注册时间: 2011年 6月 20日 09:19
联系:

Re: CK插件之数据缓存:实现类似smarty的静态数据缓存

帖子 zuobq »

楼主的想法不错,尤其对于SAE上数据库请求都需要计费,这样会降低许多云豆消耗
期待杰作
wwwdsd
帖子: 262
注册时间: 2009年 6月 13日 23:06
联系:

Re: CK插件之数据缓存:实现类似smarty的静态数据缓存

帖子 wwwdsd »

数据缓存了,会不会影响插件的运行?
头像
Rakiy
帖子: 52
注册时间: 2011年 11月 20日 15:32
联系:

Re: CK插件之数据缓存:实现类似smarty的静态数据缓存

帖子 Rakiy »

额,想法很不错啊,话说,前几天刚看到楼主的帖子,今天就有工具发出来了,真速度……
captainkoo
帖子: 20
注册时间: 2010年 6月 24日 05:31
联系:

Re: CK插件之数据缓存:实现类似smarty的静态数据缓存

帖子 captainkoo »

@DEFE 这个不会。因为缓存的对象是经过插件运行后生成的页面数据。因为插件分为两种:页面输出前运行的插件,页面输出后(客户端浏览器)运行的插件。

第一种(服务器端)插件:有一部分是每次参与页面生成时都会得出不同结果的,例如:文章计数器,每一次访问文章页面,计数结果都要加1,这一类插件会被本缓存插件影响。而每次参与页面内容生成时得出结果基本一致(如标题图生成插件)的那些插件则不会受影响。

第二种(客户端)插件:这些插件都是达到客户端浏览器后才其作用的。比如,评论框表情插件,ajaxComment等,还有就是页面特效插件之类的。这些插件与缓存插件无关。因为内容是服务器生成的。

目前我自己想到的受影响的大概就是计数器插件。所以我已经在插件中加上了“缓存模式”下的计数器功能了。
mybg
帖子: 508
注册时间: 2010年 5月 27日 16:20
联系:

Re: CK插件之数据缓存:实现类似smarty的静态数据缓存

帖子 mybg »

继续期待。。。。
头像
muchun
帖子: 734
注册时间: 2011年 11月 24日 10:39

Re: CK插件之数据缓存:实现类似smarty的静态数据缓存

帖子 muchun »

我也期待中,估计我倒是用不上了,我就是楼主所说的小流量,现在是,将来也是,哈哈!
回复