从用户输入URL开始会经历哪些缓存
2017-02-18 本文已影响46人
phper1021
根据用户发起一个HTTP请求开始,会经历哪些缓存。
-
用户层
- DNS
- DNS系统本地缓存(客户端操作系统DNS缓存)
- LocalDNS缓存(本地DNS提供商的缓存)
- DNS缓存服务器(专用的DNS缓存服务器)
- 浏览器DNS缓存(Firefox默认60秒,HTML5的新特性:DNS Prefetching)
- 应用程序DNS缓存(Java(JVM)、PHP语言本身的DNS缓存)
- 浏览器
- HMTL5新特性:Link Prefetching
- 基于最后修改时间的HTTP缓存协商: Last-Modified
- 基于过期时间的HTTP缓存协商: Expires、cache-control
- 基于打标签的HTTP缓存协商: Etag
- DNS
-
代理层
- 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(数据缓存、指令缓存) L2、L3)
- 内存Cache(内存高速缓存、Page Cache)
- 操作系统
-
物理层
- 磁盘
- Disk Cache(磁盘缓存(Cache memory))
- 硬件
- Raid Cache(磁盘阵列缓存)
- 磁盘