轉自:https://www.unixhot.com/page/cache
緩存分層 |
緩存分級 |
內容 |
內容簡介/主要技術關鍵詞 |
用戶層 |
DNS | 瀏覽器DNS緩存 | Firefox默認60秒,HTML5的新特性:DNS Prefetching |
| 應用程序DNS緩存 | Java(JVM)、PHP語言本身的DNS緩存 | ||
| 操作系統DNS緩存 | 客戶端操作系統DNS緩存 | ||
| DNS緩存服務器 | 專用的DNS緩存服務器、LocalDNS緩存 | ||
| 瀏覽器 | 瀏覽器緩存 | HMTL5新特性:Link Prefetching | |
| 基於最后修改時間的HTTP緩存協商: Last-Modified | |||
| 基於打標簽的HTTP緩存協商: Etag | |||
| 基於過期時間的HTTP緩存協商: Expires、cache-control | |||
代理層 |
CDN | 反向代理緩存 | 基於Nginx+(Squid、Varnish、ATS)等,一般有多級 |
Web層 |
解釋器 | Opcache | 操作碼緩存 |
| Web服務器 | Web服務器緩存 | Apache(mod_cache)、Nginx(FastCGI緩存、Proxy cache) | |
應用層 |
應用服務 | 動態內容緩存 | 緩存動態輸出 |
| 頁面靜態化 | 動態頁面靜態化,需要專門用於靜態化的CMS | ||
| Local Cache | 應用本地緩存,PHP(Yac、Xcache) Java(ehcache) | ||
數據層 |
分布式緩存 | 分布式緩存 | Memcache、Redis等 |
| 數據庫 | MySQL | MySQL自身緩存、innodb緩存、MYISAM緩存 | |
系統層 |
操作系統 | CPU Cache | L1(數據緩存、指令緩存) L2、L3 |
| 內存Cache | 內存高速緩存、Page Cache | ||
物理層 |
Raid卡 | Raid Cache | 磁盤陣列緩存(Raid卡可以控制是否使用磁盤高速緩存) |
| 磁盤 | Disk Cache | 磁盤高速緩存 |
一、用戶層緩存
1、查看谷歌瀏覽器DNS緩存信息方法
查看谷歌瀏覽器DNS緩存信息方法:chrome://net-internals/#dns,如圖谷歌瀏覽器中緩存了自身訪問的網站DNS緩存解析記錄,在下一次進行訪問時,不需要再進行域名解析,可以直接請求服務器IP地址,當然前提是在DNS的緩存時間沒有失效。

2、DNS預獲取
DNS預獲取是屬於前端優化的一種手段,dns-prefetch可以提升頁面的載入速度。一般來說,在前端優化中與DNS有關的有2點:一個是減少DNS的請求次數,另一個就是進行DNS預獲取。
什么是 DNS Prefetch ?
DNS Prefetch 是一種DNS 預解析技術,當你瀏覽網頁時,瀏覽器會在加載網頁時對網頁中的域名進行解析緩存,這樣在你單擊當前網頁中的連接時就無需進行DNS的解析,減少用戶等待時間,提高用戶體驗。
如果要瀏覽器端對特定的域名進行解析,可以再在頁面中添加link標簽實現。例如京東的頁面就進行了DNS預獲取:

