#1 SunPSP
关于spAccess的一个小疑问:貌似spAccess过期自动删除是在第二次访问的时候触发的
那么如果某个资源很悲催的在第一次出发生成缓存之后就再没人访问了
这个缓存不就无法被触发清除了?就这么一直占着空间不释放了?
几个好说,要是多了不就是个悲剧啊。。。。
不是没这个可能,做时效性较短的网站出现这个情况的概率很高
正热的情况下没问题,不断有人请求,生成清除转得的过来
一旦过了这一阵,没人关注了自然就没人访问这个资源了
那么这个时候这个缓存就不会被触发清除程序,也就一直存在了?
然后为了达到不会因为某个请求触发了清除程序而出现找不到资源的情况
一般设计程序的时候的思路是先尝试读取该记录的缓存
缓存不存在再从数据库读取生成缓存同时输出
这样出现的情况就是
无论如何,只要有请求,那么这个缓存就一定会出现
因为程序设计的时候就是如此,如果没有则生成,如果过期则删除旧的再生成新的
而在有请求的时候,这个缓存即使过期了也会因为无法触发清除程序而一直存在
目前我的方法是定时清除全部缓存
不管有没过期全部杀掉然后让其自行根据访问情况再生成
这样出现的一个问题就是在清除缓存后的一段时间内,CPU动不动狂飙,居高不下很痛苦
求各路大神上仙解惑,最好能给个思路解决这个问题
2013-03-15 08:35:12