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

插件开发及发布

版主: woniou

wwwdsd
帖子: 262
注册时间: 2009年 6月 13日 23:06
联系:

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

帖子 wwwdsd »

支持,多来点楼主这样的大师吧。
mybg
帖子: 508
注册时间: 2010年 5月 27日 16:20
联系:

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

帖子 mybg »

cookie也被缓存了。。。
zuobq
帖子: 60
注册时间: 2011年 6月 20日 09:19
联系:

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

帖子 zuobq »

不烦恼的wap插件会无法判断浏览器类型,导致显示的首页是启用缓存插件之后的页面,可能是wap
头像
Rakiy
帖子: 52
注册时间: 2011年 11月 20日 15:32
联系:

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

帖子 Rakiy »

留言部分的 Cookie 被缓存成最后1个留言的人的信息

这是飞天舞的BLOG上测出来的……
mybg
帖子: 508
注册时间: 2010年 5月 27日 16:20
联系:

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

帖子 mybg »

这个可能是我个人模板使用不一样引起的。
可以细说一下怎么缓存局部吗?
captainkoo
帖子: 20
注册时间: 2010年 6月 24日 05:31
联系:

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

帖子 captainkoo »

Email上收到您的提问,一时没反应过来,现在猜就是楼上mybg发的邮件吧?请允许我将我回复的邮件内容也贴一次到这里。方便其他童鞋参考。说的挺乱,高手请略过,勿见笑。

抱歉这些天一直比较忙。那个缓存插件关键是建立了一个数据表,用以缓存所需要的数据。我原来的做法在typecho系统来说是必须要懂一点技术才能做好页面级别的缓存的。而模块级别的缓存要求可能会更高一些。倒不是说技术上更难实现,恰恰相反,模块级别的技术要求更低,但对业务逻辑的要求更高。
举例说:某前辈的水榜插件。我们的许多页面在边栏都可能会调用到。水榜插件每次调用都需要查找数据库,查找用户的头像数据,然后php把从mysql中查到的数据综合起来计算谁在前谁在后,血条的长度等等,最后才能成html代码,推到php的缓冲区,等待整个页面运行完毕就一并输出到客户端浏览器。这样一个过程,其实并不需要每次访问都做,如果我们把第一次访问所产生的水榜插件运行生成的最终html代码缓存到mysql(或SAE的memcache内存中),加一个生命周期时间,加一个hash做标帜(方便查找调用),每次访问页面,就根据水榜插件缓存的hash标帜,在mysql或memcache中找该hash对应的缓存,
有:调出来,判断一下生命周期是否过期,过期删掉,重建一次缓存,未过期则直接使用。
无:生成对应缓存,以供后续使用。
这样,在生命周期内(比如我们设置30分钟),所有访问在调用水榜插件时,都只需要查一次mysql或调用一次memcache内存缓存,比起运行整个水榜插件来说,可以省很多很多。特别是对于某些数据查询量比较大的插件来说,效果十分明显。之前论坛上mybg做了测试后觉得缓存的结果太令人吃惊(未用缓存:页面执行耗时:427.8毫秒。Mysql数据查询:214次;用缓存:页面执行耗时:3.1毫秒。Mysql数据查询:34次),其实结果没有错,而缓存本身就应该实现这样的效果来的。

以上是用水榜插件举例说明模块级别缓存的原理。其实运用到任何其他地方都是一样的道理的。我自己的博客就在使用这样的模块级别的缓存,而且因为是SAE的memcache缓存,用的是内存条所以速度比mysql缓存快上好几个量级。但虚拟空间一般不提供memcache这一类内存式缓存。所以mysql也只能作为唯一选择了。
bibcc
帖子: 214
注册时间: 2012年 1月 22日 15:38

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

帖子 bibcc »

正好需要这个生成时间的插件,谢谢ck啊

另外反馈个cache的问题,如果是admin登录并第一次访问了文章那么评论和侧边栏都会显示admin已登录,建议老大在setCache加个admin的判断,是管理不缓存页面。另外问一下如果生成文件cache的话和你的这个生成dbcache相比的话哪个速度快些呢?

这个在index.php->begin挂载的插件应该算是速度最快的了,不过感觉要看灵活性的话还真得像大师说的那样同时使用插件并根据插件更改模板,相对而言灵活性和速度的折中,像this->options这种网站设置好了几乎不会变化的查询完全可以缓存一万年,直到更新设置重新缓存,不过看现在的话不改程序好像是实现不了的。单纯想依靠一个plugin就想实缓存和灵活性几乎是不可能的,怎么看都得在模板上动刀。还有一个希望就是typecho官方抓紧更新一个新版本,替咱把这解决了....纯属个人意见

这个cache配合typecho做企业站应该是无敌了,所有页面关闭评论,网站万年不更新,所有页面缓存,速度唰唰的 ;)
青珏Raingo
帖子: 9
注册时间: 2017年 6月 29日 12:25

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

帖子 青珏Raingo »

支持
青珏Raingo
帖子: 9
注册时间: 2017年 6月 29日 12:25

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

帖子 青珏Raingo »

没看见附件呀
回复