從使用者輸入URL開始會經歷哪些快取

亮亮發表於2017-05-31

根據使用者發起一個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(磁碟陣列快取)

相關文章