java缓存

1、什么是缓存 html

一、Cache是高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据nginx

以利于快速访问web

二、凡是位于速度相差较大的两种硬件/软件之间的,用于协调二者数据传输速度差别ajax

的结构,都可称之为 Cache数据库

2、缓存的分类 编程

一、基于web应用的系统架构图浏览器

二、在系统架构的不一样层级之间,为了加快访问速度,均可以存在缓存缓存

操做系统磁盘缓存­>减小磁盘机械操做服务器

数据库缓存­>减小文件系统I/O网络

应用程序缓存­>减小对数据库的查询

Web服务器缓存­>减小应用服务器请求

客户端浏览器缓存­>减小对网站的访问

3、操做系统缓存

一、文件系统提供的Disk Cache:操做系统会把常常访问到的文件内容放入到内存当

中,由文件系统来管理

二、当应用程序经过文件系统访问磁盘文件的时候,操做系统从Disk Cache当中读取文

件内容,加速了文件读取速度

三、Disk Cache由操做系统来自动管理,通常不用人工干预,但应当保证物理内存充

足,以便于操做系统可使用尽可能多的内存充当Disk Cache,加速文件读取速度

四、特殊的应用程序对文件系统Disk Cache有很高的要求,会绕开文件系统Disk

Cache,直接访问磁盘分区,本身实现Disk

五、Cache策略

Oracle的raw device(裸设备) – 直接抛弃文件系统

MySQL的InnoDB: innodb_flush_method = O_DIRECT

4、数据库缓存一、重要性

数据库一般是企业应用系统最核心的部分

数据库保存的数据量一般很是庞大

数据库查询操做一般很频繁,有时还很复杂

以上缘由形成数据库查询会引发很是频繁的磁盘I/O读取操做,迫使CPU挂

起等待,数据库性能极度低下

二、缓存策略

a、Query Cache

以SQL做为key值缓存查询结果集

一旦查询涉及的表记录被修改,缓存就会被自动删除

设置合适的Query Cache会极大提升数据库性能

Query Cache并不是越大越好,过大的Qquery Cache会浪费

内存。

MySQL: query_cache_size= 128M

b、Data Buffer

data buffer是数据库数据在内存中的容器

data buffer的命中率直接决定了数据库的性能

data buffer越大越好,多多益善

MySQL的InnoDB buffer:innodb_buffer_pool_size = 2G

MySQL建议buffer pool开大到服务器物理内存60­80%

5、应用程序缓存

一、对象缓存

由O/R Mapping框架例如Hibernate提供,透明性访问,细颗粒度缓存数据

库查询结果,无需业务代码显式编程,是最省事的缓存策略

当软件结构按照O/R Mapping框架的要求进行针对性设计,使用对象缓存

将会极大下降Web系统对于数据库的访问请求

良好的设计数据库结构和利用对象缓存,可以提供极高的性能,对象缓存

适合OLTP(联机事务处理)应用

二、查询缓存

对数据库查询结果集进行缓存,相似数据库的Query Cache适用于一些耗时,可是时效性要求比较低的场景。查询缓存和对象缓存适

用的场景不同,是互为补充的

当查询结果集涉及的表记录被修改之后,须要注意清理缓存

三、页面缓存

a、做用

针对页面的缓存技术不但能够减轻数据库服务器压力,还

能够减轻应用服务器压力

好的页面缓存能够极大提升页面渲染速度

页面缓存的难点在于如何清理过时的缓存

b、分类

I、动态页面静态化

利用模板技术将访问过一次的动态页面生成静态html,同

时修改页面连接,下一次请求直接访问静态连接页面

动态页面静态化技术的普遍应用于互联网CMS/新闻类Web

应用,但也有BBS应用使用该技术,例如Discuz!

没法进行权限验证,没法显示个性化信息

可使用AJAX请求弥补动态页面静态化的某些缺点

II、Servlet缓存

针对URL访问返回的页面结果进行缓存,适用于粗粒度的

页面缓存,例如新闻发布

能够进行权限的检查

OScache提供了简单的Servlet缓存(经过web.xml中的配置)

也能够本身编程实现Servlet缓存

III、页面内部缓存

针对动态页面的局部片段内容进行缓存,适用于一些个性

化但不常常更新的页面(例如博客)

OSCache提供了简单的页面缓存

能够自行扩展JSP Tag实现页面局部缓存

6、web服务器端缓存基于代理服务器模式的Web服务器端缓存,如squid/nginx

Web服务器缓存技术被用来实现CDN(内容分发网络 content delivery

network)

被国内主流门户网站大量采用

不须要编程,但仅限于新闻发布类网站,页面实时性要求不高

7、基于ajax的浏览器缓存

使用AJAX调用的时候,将数据库在浏览器端缓存

只要不离开当前页面,不刷新当前页面,就能够直接读取缓存数据

只适用于使用AJAX技术的页面

相关文章
相关标签/搜索