根据用户发起一个HTTP请求开始,会经历那些缓存。web
用户层数据库
DNS浏览器
DNS系统本地缓存(客户端操做系统DNS缓存)缓存
LocalDNS缓存(本地DNS提供商的缓存)服务器
DNS缓存服务器(专用的DNS缓存服务器)分布式
浏览器DNS缓存(Firefox默认60秒,HTML5的新特性:DNS Prefetching)fetch
应用程序DNS缓存(Java(JVM)、PHP语言自己的DNS缓存)ui
浏览器操作系统
HMTL5新特性:Link Prefetching代理
基于最后修改时间的HTTP缓存协商: Last-Modified
基于过时时间的HTTP缓存协商: Expires、cache-control
基于打标签的HTTP缓存协商: Etag
代理层
CDN,反向代理缓存(基于Squid、Varnish、Nginx、ATS等,通常有多级)
web层
解释器
Opcache(操做码缓存)
web服务器
Web服务器缓存 (Apache(mod_cache)、Nginx(FastCGI缓存、Proxy cache))
应用层
应用服务
动态内容缓存(缓存动态内存输出)
Local Cache(应用本地缓存,PHP(Yac、Xcache) Java(ehcache))
页面静态化(动态页面静态化,专门用于静态化的CMS)
数据层
分布式缓存
分布式缓存(Memcache、Redis)
数据库
MySQL(innodb缓存、MYISAM缓存)
系统层
操做系统
CPU Cache(L1(数据缓存、指令缓存) L二、L3)
内存Cache(内存高速缓存、Page Cache)
物理层
磁盘
Disk Cache(磁盘缓存(Cache memory))
硬件
Raid Cache(磁盘阵列缓存)