最近下班之后有大量闲暇时间,想做一个内容管理系统,包括前台文章浏览和后台的文章管理。
今天就对系统中将要用到的缓存方面的东西,做一下感想。
1、用什么做缓存?
在之前的项目中接触过Redis和Memcache,当时项目中使用Redis比较多,所以相比Mecache,自己更熟悉Redis,所以这次使用Redis来做缓存。
2、缓存用到哪?
用缓存是为了提高响应速度,很明显NoSQL数据库的的访问速度远远大于关系型数据库。那么肯定要对数据库中经常使用的数据进行缓存,这是其一。其二,我的想法是把指定的页面也进行缓存。有这一想法,也是源于最近的一个项目。在那个项目中,首页需要加载大量的商品,导致首页的打开速度很慢,项目经理让我把首页整个缓存到Memcache,缓存的刷新是靠设置缓存过期时间和在后台手动删除缓存来控制。所以,对当下要做的项目,也准备把页面进行缓存。总结一下:缓存用到哪?1、缓存数据,2、缓存页面。
下面是对两种缓存的操作说明:
1、数据缓存
只对经常用到数据进行缓存,那么对于当下的项目,文章这个对象肯定要进行缓存的。
1)新增时,保存到数据库后,新增缓存。
2)更新时,更新数据库的数据之后,更新缓存。
3)删除时,删除数据库的数据之后,删除缓存。
对象的缓存,网上有大量技术文章分析的非常详细,在此不再赘述。
2、页面缓存
在当前项目中,计划对首页,以及每个分类下的首页进行缓存。
未完待续...
3、缓存的刷新
1、数据缓存,在数据发生变化是肯定去主动刷新缓存
2、页面缓存,一种方式是设置缓存超时时间,超时之后缓存清除,再次访问页面时,将页面重新输入缓存中。另一种可以定期刷新缓存,不通过浏览器请求,系统自动请求,将缓存刷新。
第二种方式可以保证浏览器的每次请求都是从缓存中获取数据,保证响应时间。而第一种,在缓存超时被清除时,响应时间会长一些。
PS:也想过缓存整个页面是否妥当,是否应该对页面上的内容进行分类切割,分类缓存,比如对热门文章列表进行单独缓存。