CMS中缓存显的至关重要,CMS中的缓存主要有静态缓存和动态缓存两种技术,但看下来现在觉得这两种也只是对于最终信息页面的缓存,现在的需求是:
1、站点、栏目、信息列表的缓存。
2、信息页面的缓存。
对于需求2使用动态和静态缓存的技术都可以较为简单的实现,但对于需求1则不同,需求1中的站点、栏目和信息列表是时时动态的,而且还有分页以及结合权限控制的问题,在这种情况下,用生成静态页面的办法是很难实现的,几乎就不可能,那么通常我们想到的第一种最为直接的方法就是借助数据库缓存来实现,就拿基于Hibernate的来说,Hibernate提供的缓存是对于PO以及PO关联的缓存,但同样是无法实现上述需求中所要的效果的,目前暂时还没想出什么好的解决方案,准备去翻阅一下jsr170,不知道是不是因为大家觉得对站点、栏目和信息列表做缓存没意义,诚然,站点和栏目列表可能本来就不会很多,所以缓存的意义不是那么的大,但信息列表缓存的意义则非常明显。
分页以及结合权限控制是实现此缓存技术的难点,其实这个也可以引申到整个系统,成为系统级的缓存技术,如大家有这方面的经验,请不吝赐教!
列一个校验的场景:
在一个信息列表中,每个信息的权限有多种情况,比如信息列表中存在A、B、C三条信息,各条信息的权限授予给了(guest,admin)、(guest)、(admin),这个时候要获取guest的信息列表,加入cache需要提高效率的地方就在于避免获取信息列表时需与数据库进行实时的查询,同时要注意,一般来说,系统的信息数据量会是比较的大。