我的网站想做一个按商品点击率进行排行的排行榜, 
可是现在遇到一个问题就是怎么样保存每件商品的点击率 
我想了几种方案,请大家给点意见,如果有更好的方法,将感激不尽。 一,建一张专门记录客户端访问信息的表,每点击一次增加一条记录,记下访问时间和商品的ID。 
二,用cache或者application来缓存,然后达到一定数量后一次性更新到数据库中。 
三,将访问量保存在XML文件中,每隔一段时间更新到数据库中。(似乎不可取,XML数据量太大的时候访问很慢)那么cache具体怎么使用呢?和Application有什么区别吗?如果服务器档掉了重起了,cache中的数据也会没有吗? 
有人能详细解释一下吗?或者给个相关的网址也行。还有一个问题就是 cache和application 一般能缓存多少数据才不会对服务器造成太大的影响呢?

解决方案 »

  1.   

    我的做法是在商品表里见个clickcount(点击率)字段,在商品详细页的加载时候让该商品的clickcount+1
      

  2.   


    如果你认为缓存的意思就是“暂时存在内存,过会儿存到数据库”就是非常有害的想法了。缓存的意思是对数据库中的业务数据保存内存中的暂存版本,并且尽量保证数据一致。因此,放入Cache的数据,必须同时放入数据库中。如果你觉得正常地使用缓存是多余地,那么你就不要使用缓存。不用要比乱用带来的对信息管理的失误要小。
      

  3.   

    直接数据库UPDATE + 1。(*^__^*) 嘻嘻……
      

  4.   


    虽然可能回答你这个问题过早,不是还是简单回答一下。数据缓存编程的关键是懂得设置各种依赖项。知道缓存是内存中保存数据,这等于不知道asp.net缓存技术。缓存编程的关键是你懂得让应该失效的缓存数据尽早失效。学会设置了依赖项之后,你才可以大量使用缓存。即使你不设置依赖项,或者设置的依赖项很“迟钝”,asp.net的Cache也会在内部不断地“复审”内存空间的状态,它会根据内存的大小自动计算出合适的缓存大小,然后(时不时地)自动移除一批最近不用的缓存数据,直到空间足够富余出它需要的大小。
      

  5.   

    Cache确实会计算两次“复审”之间的时间,它不会频繁地压缩缓存空间。如果你不是瞬间放入巨量的数据到Cache集合中,可以说,Cache是一个无底洞,可以放入无限多数据。因为Cache是会自动地、智能地遗忘数据的。你无需担心“对服务器造成多大影响”问题。你需要担心的是,如果你频繁地放入数据,这些数据又必须立刻失效,必须重新放入新数据,这就造成了局部缓存空间的较大“抖动”,那么你就白白浪费了一些CPU时间,仅此而已。
      

  6.   

    这样做的话,如果网站的访问量大了,这样频繁的更新数据库中的数据,对数据库的影响会不会很大,万一数据库档掉了怎么办啊?如果把数据暂时保存在application中,当达到一定数量或者是设置一定时间统一更新一次count+N;这样会不会好一些?