- 鳳凰架構:構建可靠的大型分布式系統
- 周志明
- 586字
- 2021-06-24 11:30:57
4.1 客戶端緩存
瀏覽器的緩存機制幾乎是在萬維網剛剛誕生時就已經存在,在HTTP協議設計之初,便確定了服務端與客戶端之間“無狀態”(Stateless)的交互原則,即要求每次請求是獨立的,每次請求無法感知也不能依賴另一個請求的存在,這既簡化了HTTP服務器的設計,也為其水平擴展能力留下了廣袤的空間。但無狀態并不只有好的一面,由于每次請求都是獨立的,服務端不保存此前請求的狀態和資源,所以也不可避免地導致其攜帶了重復的數據,導致網絡性能降低。HTTP協議對此問題的解決方案便是客戶端緩存,在HTTP從1.0到1.1,再到2.0版本的演進中,逐步形成了現在被稱為“狀態緩存”“強制緩存”(許多資料中簡稱為“強緩存”)和“協商緩存”的HTTP緩存機制。
狀態緩存是指不經過服務器,客戶端直接根據緩存信息對目標網站的狀態判斷,以前只有301/Moved Permanently(永久重定向)這一種;后來在RFC6797中增加了HSTS(HTTP Strict Transport Security)機制,用于避免依賴301/302跳轉HTTPS時可能產生的降級中間人劫持(詳見5.5節),這也屬于另一種狀態緩存。由于狀態緩存所涉內容只有這么一點,后續我們就只聚焦討論強制緩存與協商緩存兩種機制。
無論是強制緩存還是協商緩存,原理都是在服務器對客戶端請求的響應中附帶一些條件,要求客戶端在遇到相同的請求時,先判斷一下條件是否滿足,如果滿足,就直接用上一次服務器給予的響應來代替,不必重新訪問。這兩種緩存機制的區別是它們采用了不同的判斷條件來解決資源在客戶端和服務器間的一致性問題。
推薦閱讀
- pcDuino開發實戰
- Citrix XenApp Performance Essentials
- Red Hat Enterprise Linux 8系統管理實戰
- Linux實戰
- 白話區塊鏈
- Linux操作系統應用編程
- 一學就會:Windows Vista應用完全自學手冊
- OpenStack系統架構設計實戰
- ElasticSearch Cookbook
- Vim 8文本處理實戰
- VMware Horizon View Essentials
- Linux網絡配置與安全管理
- Linux網絡操作系統項目教程(RHEL 7.4/CentOS 7.4)(第3版)(微課版)
- Office 365 User Guide
- OpenHarmony開發與實踐:基于紅莓RK2206開發板