- 1、本文档共42页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
缓存技术流讲座(Web服务器缓存、应用程序缓存、客户端缓存)
缓存技术介绍
2014年1月
目录
系统响应
等待体验
从用户的角度,通常通过访问一系列系统页面,从等待响应的时间来评估系统性能。
响应快的系统给用户带来良好的体验,让用户专注于页面内容和业务操作而完全忘记系统的快慢问题。
而如果等待的时间过长?吐槽、抱怨、投诉……
系统响应
通过浏览器访问页面
系统响应
等待的时间
数据在网络上传输的时间。
服务器处理请求并生成响应数据的时间
浏览器本地计算和渲染的时间
系统响应
如何减少响应时间
找到瓶颈,采取相应的措施
增加硬件资源(增加网络带宽、提高服务器配置…)
减少网页HTTP请求
服务端业务逻辑优化
集群负载均衡
数据库优化
网页静态化
动态缓存
数据缓存
等待提示
系统响应
缓存的目的
把需要花费昂贵开销的计算结果保存起来,在以后需要的时候直接取出,避免重复的计算,从而提高系统响应速度。
系统响应
缓存的分类
操作系统磁盘缓存 : 减少磁盘机械操作
数据库缓存 : 减少文件系统I/O
应用程序缓存 : 减少对数据库的查询
Web服务器缓存 : 减少应用服务器请求
客户端浏览器缓存 : 减少对网站的访问
目录
应用程序缓存
动态网页
PHP、JSP、ASP、ASPX等
相比静态网页,显示的内容随着时间、环境或者数据操作的结果发生改变,呈现给用户动态可变的内容
当用户请求时服务端处理并响应生成的html静态内容
在服务器端的处理增加了用户等待的时间
应用程序缓存
页面缓存
以文件的形式缓存部分网页内容
MVC模式将视图分离,使得页面缓存更加丰富灵活
Velocity、freemarker页面模板
应用程序缓存
页面静态化
以文件的形式缓存完整的网页内容
用户直接访问html静态页面
为了方便查找,大量的文件缓存以目录分级的形式存放
应用程序缓存
过期检查与更新策略
动态内容引入缓存,在一定程度上避免了动态内容不必要的重复计算,缩短的请求响应时间
动态内容的目的在于提供变化的内容,所以缓存不可能长期有效
动态内容缓存机制必须判断缓存何时过期,以及何时需要生成新的缓存
在数据更新时重新生成静态化内容
定时重新生成静态化内容
应用程序缓存
将缓存放入内存
以文件的形式缓存在加载和过期检查的时候都存在磁盘I/O
在内存允许的情况下,可以考虑将缓存写入内存
应用程序缓存
对象缓存
从数据操作上来说,企业级应用无非是对数据的增、删改、查,因此服务端很大部分的工作都是对数据库记录的操作
O/R Mapping框架细粒度缓存数据库查询结果,表记录级别
对数据库记录对象的缓存可以减少数据库操作,提升系统性能
应用程序缓存
对象缓存的范围
事务范围:缓存只能被当前事务访问
进程范围:缓存被进程内的所有事务共享
集群范围:缓存被一台或多台机器共享
如果在事务范围的缓存中没有查到相应的数据,还可以到进程范围或集群范围的缓存内查询,如果还是没有查到,那么只有到数据库中查询
从集群缓存中查找未必比从数据库查找快
应用程序缓存
一级缓存
事务范围的缓存
ORM框架通常必须实现一级缓存
应用程序缓存
二级缓存
在不改变代码的情况下极大提升web应用性能
可能出现并发问题(跨事务),因此需采用相应的并发访问策略
查询时先从一级缓存中查找对象,如果没有找到则从二级缓存中查找,如果 没有找到则从数据库中查找
删除、更新、添加时同步更新二级缓存
应用程序缓存
查询缓存
对数据库查询结果进行缓存(缓存entity和id)
自动清理过期数据
应用程序缓存
简单缓存
将常用对象放入全局的Hashtable
应用程序缓存
JCache
JCache规范(JSR 107)定义了一种对Java对象临时在内存中进行缓存的方法,包括对象的创建、共享访问、假脱机(spooling)、失效、各JVM的一致性等
Jcache可能会成为JavaEE 8中的一个规范
/en/jsr/detail?id=107
应用程序缓存
OSCache
JavaEE缓存框架
缓存任意Java对象
通过JSP标签缓存部分页面
缓存过滤器(Last-Modified)
内存和磁盘缓存
支持集群
应用程序缓存
EhCache
纯Java的快速、轻量级缓存框架
Hibernate默认的CacheProvider
内存和磁盘缓存
支持集群
应用程序缓存
JBossCache
集群复制
支持事务
提供两种缓存方式:核心缓存和POJO缓存
核心缓存:K/V方式
POJO缓存:被放入POJO缓存的object的属性发生改变时自动更新POJO缓存
应用程序缓存
MemCached
高性能的分布式内存对象缓存系统
内存缓存
服务器进程用C编写,客户端可以用任意语言编写
Memcached服务器端
您可能关注的文档
- 管理会计语版总结.ppt
- 管杰--实施主体性德育 提高德育的实效.ppt
- 管理案例析的方法与示例.ppt
- 管理技能升培训.pptx
- 管理方格论.ppt
- 管理者的养.ppt
- 管理信息统 第七章 系统分析.ppt
- 管理的理及管理者应具备的素质.ppt
- 管道 专 方案.doc
- 管道保温案.doc
- 菏泽市曹县阎店楼镇社区工作者考试题目及答案2024.docx
- 德州市宁津县大曹镇社区工作者考试题目及答案2024.docx
- 滨州市博兴县湖滨镇社区工作者考试题目及答案2024.docx
- 滨州市阳信县温店镇社区工作者考试题目及答案2024.docx
- 聊城市高唐县固河镇社区工作者考试题目及答案2024.docx
- 临沂市兰陵县鲁城镇社区工作者考试题目及答案2024.docx
- 临沂市沂南县孙祖镇社区工作者考试题目及答案2024.docx
- 聊城市阳谷县定水镇社区工作者考试题目及答案2024.docx
- 聊城市阳谷县李台镇社区工作者考试题目及答案2024.docx
- 菏泽市曹县青岗集镇社区工作者考试题目及答案2024.docx
文档评论(0)