1. 操作系统磁盘缓存 减少磁盘机械操作
- 文件系统提供的Disk Cache:操作系统会把经常访问到的文件内容放入到内存当中,由文件系统来管理
- 当应用程序通过文件系统访问磁盘文件的时候,操作系统从Disk Cache当中读取文件内容,加速了文件读取速度
- Disk Cache由操作系统来自动管理,一般不用人工干预,但应当保证物理内存充足,以便于操作系统可以使用尽量多的内存充当Disk Cache,加速文件读取速度
- 特殊的应用程序对文件系统Disk Cache有很高的要求,会绕开文件系统Disk Cache,直接访问磁盘分区,自己实现Disk Cache策略
- Oracle的raw device(裸设备) – 直接抛弃文件系统
- MySQL的InnoDB: innodb_flush_method = O_DIRECT
2.数据库缓存 减少文件系统I/O
- 为什么数据库非常依赖缓存?
数据库通常是企业应用系统最核心的部分
数据库保存的数据量通常非常庞大
数据库查询操作通常很频繁,有时还很复杂
以上原因造成数据库查询会引起非常频繁的磁盘I/O读取操作,迫使CPU挂起等待,数据库性能极度低下
- 数据库有哪些缓存策略?
Query Cache
Data Buffer
3.应用程序缓存 减少对数据库的查询
- 对象缓存
- 查询缓存
- 页面缓存
- 动态页面静态化
- Servlet缓存
- 页面内部缓存
4.Web服务器缓存 减少应用服务器请求
- 基于代理服务器模式的Web服务器端缓存
- squid/nginx
- Web服务器缓存技术被用来实现CDN(内容分发网络 content delivery network)
- 被国内主流门户网站大量采用
- 不需要编程,但仅限于新闻发布类网站,页面实时性要求不高
5.客户端浏览器缓存 减少对网站的访问
- 浏览器缓存(Browser Caching)是为了节约网络的资源加速浏览,浏览器在用户磁盘上对最近请求过的文档进行存储,当访问者再次请求这个页面时,浏览器就可以从本地磁盘显示文档,这样就可以加速页面的阅览。
- 浏览器缓存主要有两类:缓存协商:Last-modified ,Etag 和彻底缓存:cache-control,Expires。