一 . 缓存概述
1 ) . 缓存的目的 :
1.1 提高应用程序性能
2 ) . 缓存的存储介质 :
2.1内存 ; 通常存在内存中,确切的说是存在jvm的内存中
2.2硬盘 :存在硬盘是 因为内存的资源相当有限和宝贵 ,又虽硬盘速度不如内存快,但一样减少了网络通信量,因此还是提高了性能
3 ) . 缓存的分类 :
3.1 客户端缓存 : 通常指的是IE浏览器的缓存
3.2 服务器端缓存 :通常指web服务器的缓存,可以通过第三方组件实现 : oscache,memcache
4 ) . 缓存内容 :
4.1 我们通常将那些访问频繁但是又不经常改变的数据进行缓存
5 ) . 刷新缓存 :
5.1 为了保证缓存数据的有效性,在数据发生改变时,我们要刷新内存,避免脏数据的出现
5.2 刷新缓存的策略有两种 : 定时刷新,手动刷新
6 ) . 缓存的层次 :
jsp-->action -->service(放置在service) -->dao 缓存越靠前对性能的提升越大
7 ) . 缓存的策略(缓存空间不足,需要进行清理的时候使用) :
7.1 LRU : 最近最少使用原则(理解:存储书)
7.2 FIFO : 先进先出的缓存策略(理解 : 排队)
8 ) . 我理解的缓存 :
缓存的目的是为了提高应用程序的性能,减少访问数据库的次数,从而提高应用程序的吞吐量,我们通常将权限,菜单,组织机构这些频繁访问但不经常改变的基础数据进行
缓存,其中我在做**项目时通过oscache对ZTree的树形菜单进行了缓存,并且在做的时候和单例设计模式进行结合,另考虑到多线程的安全问题,还对单例模式加入了双重判定锁的检查方式
小结 :
1. 缓存是基于Map这种思想构建的,以键值对的方式进行存取
二. 实现页面静态化业务场景
1 ) . 使用页面静态化的目的 :
1.1 提高程序访问的性能,加快用户访问进程
2 ) . 做法:
2.2 考虑到页面有动态变化,采用spring定时器,每天晚上2点终定时再次生成html静态页面
2.3考虑到发布时的性能问题,采用线程池技术,让多个线程同时发布,从而缩减发布时间