最近增加的关键字功能可能会对JR系统的整体性能造成比较大的伤害,原因就是JR的系统中最值得称道的缓存功能的限制。
按照原来的情况,JR的缓存系统在90%的情况下会工作得很好,这个和系统的特点有关。
JR的用户,很多是按照我们的页面给出的顺序查看我们的内容,当然也有一些是通过各种搜索引擎搜索得到某个内容,但是按照比例而言,按照顺序浏览的可能比较多,因此大部分的人查看的内容都在缓存中,不在缓存中的内容会再到数据库取,因此系统的效率比较高。
而在增加了关键字功能后,关键字相关的文章列表中的内容很可能不在我们的缓存中,因此要把文章相关的内容都从数据库中取出来,这个时候缓存的功能就没有发挥应用的作用甚至成为了负担,因为缓存的内容的频繁交换在这种情况下做了很多无用功。

其实这个问题并非不能解决,甚至可以增加各种排序功能(按照目前的情况增加排序功能对系统的损害是致命的),方法就是改造缓存系统,将目前的单级缓存修改为多级缓存。
按照jive的缓存设计,每个被缓存的对象需要提供一个大小信息,而缓存管理器会维持一个大小受限的缓存池,如果采用二级缓存,内容的主要信息缓存下来(例如标题,作者,发布日期,回复数,最后更新日期,查看数,最后回复者等等),
而帖子的内容一级回复作为二级缓存的内容,按照一定的比例分配一级缓存和二级缓存的大小,而系统中经常查看的可能是内容列表而非内容,这样
缓存的功能就可以大大增加,即使把全部的帖子信息都缓存下来也是可能的,因为这个信息相对帖子的内容而言很小。
这个改造的难点在于缓存是系统的一个非常核心的功能,缓存相关的代码可能比较多,进行重构并不容易,当然应该是值得研究下的。

(Visited 351 times, 1 visits today)