一、缓存是什么?
请点击此处输入图片描述
Cache
①高速缓冲存储器,其中复制了频繁使用的数据以利于快速访问。
②位于速度相差较大的两种硬件/软件之间,用于协调两者数据传输速度差异的结构
二、缓存有哪几类?
1、基于web应用的系统架构图
请点击此处输入图片描述
2、在系统架构中,不同层级之间为了加快访问速度,缓存都可以存在。
操作系统磁盘缓存->减少磁盘机械操作数据库缓存->减少文件系统I/O应用程序缓存->减少对数据库的查询Web服务器缓存->减少应用服务器请求客户端浏览器缓存->减少对网站的访问
三、操作系统缓存
1、文件系统提供的Disk Cache:经常访问到的文件内容会通过操作系统放入到内存当中,由文件系统来管理
2、当应用程序通过文件系统访问磁盘文件的时候,操作系统从Disk Cache当中读取文件内容,加速了文件读取速度
3、Disk Cache由操作系统来自动管理,一般不用人工干预,但应当保证物理内存充足,以便于操作系统可以使用尽量多的内存充当Disk Cache,加速文件读取速度
4、特殊的应用程序对文件系统Disk Cache有很高的要求,会绕开文件系统Disk Cache,直接访问磁盘分区,自己实现Disk
5、Cache策略
Oracle的raw device(裸设备) – 直接抛弃文件系统MySQL的InnoDB: innodb_flush_method = O_DIRECT
四、数据库缓存
1、重要性
数据库通常是企业应用系统最核心的部分数据库保存的数据量通常非常庞大数据库查询操作通常很频繁,有时还很复杂以上原因造成数据库查询会引起非常频繁的磁盘I/O读取操作,迫使CPU挂起等待,数据库性能极度低下
2、缓存策略
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 = 2GMySQL建议buffer pool开大到服务器物理内存60-80%
五、应用程序缓存
1、对象缓存
由O/R Mapping框架例如Hibernate提供,透明性访问,细颗粒度缓存数据库查询结果,无需业务代码显式编程,是最省事的缓存策略当软件结构按照O/R Mapping框架的要求进行针对性设计,使用对象缓存将会极大降低Web系统对于数据库的访问请求良好的设计数据库结构和利用对象缓存,能够提供极高的性能,对象缓存适合OLTP(联机事务处理)应用
2、查询缓存
对数据库查询结果集进行缓存,类似数据库的Query Cache适用于一些耗时,但是时效性要求比较低的场景。查询缓存和对象缓存适用的场景不一样,是互为补充的当查询结果集涉及的表记录被修改以后,需要注意清理缓存
3、页面缓存
a、作用
针对页面的缓存技术不但可以减轻数据库服务器压力,还可以减轻应用服务器压力好的页面缓存可以极大提高页面渲染速度页面缓存的难点在于如何清理过期的缓存
b、分类
I、动态页面静态化
利用模板技术将访问过一次的动态页面生成静态html,同时修改页面链接,下一次请求直接访问静态链接页面动态页面静态化技术的广泛应用于互联网CMS/新闻类Web应用,但也有BBS应用使用该技术,例如Discuz!无法进行权限验证,无法显示个性化信息可以使用AJAX请求弥补动态页面静态化的某些缺点
II、Servlet缓存
针对URL访问返回的页面结果进行缓存,适用于粗粒度的页面缓存,例如新闻发布可以进行权限的检查OScache提供了简单的Servlet缓存(通过web.xml中的配置)也可以自己编程实现Servlet缓存
III、页面内部缓存
针对动态页面的局部片断内容进行缓存,适用于一些个性化但不经常更新的页面(例如博客)OSCache提供了简单的页面缓存可以自行扩展JSP Tag实现页面局部缓存
六、web服务器端缓存
基于代理服务器模式的Web服务器端缓存,如squid/nginxWeb服务器缓存技术被用来实现CDN(内容分发网络 content delivery network)被国内主流门户网站大量采用不需要编程,但仅限于新闻发布类网站,页面实时性要求不高
七、基于ajax的浏览器缓存
使用AJAX调用的时候,将数据库在浏览器端缓存只要不离开当前页面,不刷新当前页面,就可以直接读取缓存数据只适用于使用AJAX技术的页面

转载于:https://www.cnblogs.com/FrankLei/p/6799359.html

干货|java缓存技术详解相关推荐

  1. .net html5页面缓存技术,.net缓存技术详解

    动态缓存(1)-传统缓存 与 页面输出缓存 面详细介绍在<系统缓存全解析一>中提及的动态缓存技术: 一,传统缓存方式: 比如将可重复利用的东西放到Application或是Session中 ...

  2. php企业应用,PHP企业级应用缓存技术详解

    之前我们曾深入的探讨过PHP缓存技术,其中主要提到了数据缓存.数据缓存主要是指数据库查询缓存,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据, 并把查询结果序 ...

  3. ThinkPHP 缓存技术详解 使用大S方法

    如果没有缓存的网站是百万级或者千万级的访问量,会给数据库或者服务器造成很大的压力,通过缓存,大幅减少服务器和数据库的负荷,假如我们把读取数据的过程分为三个层,第一个是访问层,第一个是缓存层,第三个是数 ...

  4. Java探针技术详解

    简介 在JVM中运行中,类是通过classLoader加载.class文件进行生成的.在类加载器加载.class文件生成对应的类对象之前时,我们可以通过修改.class文件内容(就是字节码修改技术), ...

  5. JS缓存与浏览器缓存技术详解 学习笔记

    缓存与浏览器缓存技术: 一,缓存: 缓存是网络传输中常用到的一种技术,利用缓存可以让我们在数据传输方面更加的方便和快捷. 1.1缓存的优点: 避免冗余的数据传输: 当很多的人去访问一个网站的原始服务器 ...

  6. Java反射技术详解

    前言 相信很多人都知道反射可以说是Java中最强大的技术了,它可以做的事情太多太多,很多优秀的开源框架都是通过反射完成的,比如最初的很多注解框架,后来因为java反射影响性能,所以被运行时注解APT替 ...

  7. [SSD固态硬盘技术 6] DRAM缓存技术详解

    固态硬盘(Solid State Drives),简称SSD.它是一种电脑存储设备,由闪存(FLASH). 闪存控制器.高速缓存(DRAM)组成.这是是固态硬盘的三个基本部件,对性能有关键影响.

  8. [SSD核心技术:FTL 3] 固态硬盘SLC缓存技术详解

    声明 主页: 元存储的博客_CSDN博客 https://blog.csdn.net/vagrant0407?type=blog 本文依据公开知识及个人经验整理而成,如有错误请留言. 文章为个人辛苦整 ...

  9. java技术详解_Java反射技术详解及实例解析

    前言 相信很多人都知道反射可以说是Java中最强大的技术了,它可以做的事情太多太多,很多优秀的开源框架都是通过反射完成的,比如最初的很多注解框架,后来因为java反射影响性能,所以被运行时注解APT替 ...

  10. java 李刚 pdf_Java数据库技术详解(李刚) PDF_源雷技术空间

    资源名称:Java数据库技术详解(李刚) PDF 第一篇 数据库基础篇 第1章 Java和数据库 2 1.1 Java概述 2 1.1.1 跨平台性 2 1.1.2 面向对象 2 1.1.3 安全性 ...

最新文章

  1. python链表怎么定义_码哥聊Python数据结构--链表
  2. how to sell products on opensea
  3. 小程序影藏溢出的gif_ScreenToGif:一款小巧实用动图gif制作神器
  4. 阿里云服务器CentOS6.8安装JDK
  5. Flink的设计与实现:集群资源管理
  6. Django框架——状态保持(cookie、session)
  7. java Vector.toArray 与强制类型转换
  8. Firefox 67不能勾选“以后自动采用相同的动作处理此类文件”解决方案
  9. app图标圆角角度_?APP图标造型分析!
  10. 华为手机相册怎么镜像翻转_手机视频剪辑软件怎么制作电子相册_
  11. matlab 计算电极上瞬时电流电压,[]基于MATLAB的感应加热电源仿真.doc
  12. 如何在 HTML中使用图标字体
  13. linux下查java版本_linux如何检查Java版本
  14. java 线程与线程池详解
  15. 为什么navicat总是闪退问题解决
  16. 高通量测序的方式:单端测序、paired-end/mate-paired(PE/MP)测序 解释
  17. 知云文献,Endnote简易使用指南
  18. 解决腾讯地图标记多个点,只渲染最后一个点问题
  19. 什么是NAT模式、路由模式
  20. 怎样取消红米k40pro拍照水印(教程分享)

热门文章

  1. 基于confd和etcd的tuxedo中间件容器化方案
  2. Oracle数据库的安装及使用教程
  3. mysql海量数据查询/处理
  4. C语言动态规划——背包问题详解
  5. 01背包问题c语言,遗传算法的0-1背包问题(c语言)
  6. mov和mp4格式哪个好_录音软件哪个好用?8款好用的录音软件
  7. 大数据-玩转数据-Oracle系统知识小结
  8. VB.net 进度条使用
  9. 烧写嵌入式linux,嵌入式linux系统烧写
  10. loadrunner11的安装