8

根据用户发起一个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

  • 代理层

    • 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(磁盘阵列缓存)


亮亮
197 声望12 粉丝

求关注,求交流。专注于各种php和周边的语言,朝着架构师的道路前进,当上cto迎娶白富美。