官术网_书友最值得收藏!

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節),這也屬于另一種狀態緩存。由于狀態緩存所涉內容只有這么一點,后續我們就只聚焦討論強制緩存與協商緩存兩種機制。

無論是強制緩存還是協商緩存,原理都是在服務器對客戶端請求的響應中附帶一些條件,要求客戶端在遇到相同的請求時,先判斷一下條件是否滿足,如果滿足,就直接用上一次服務器給予的響應來代替,不必重新訪問。這兩種緩存機制的區別是它們采用了不同的判斷條件來解決資源在客戶端和服務器間的一致性問題。

主站蜘蛛池模板: 新乡市| 台湾省| 吐鲁番市| 新兴县| 饶平县| 武山县| 乌海市| 栾川县| 吴江市| 哈尔滨市| 罗山县| 海宁市| 阜城县| 琼海市| 长汀县| 本溪市| 德江县| 波密县| 桃江县| 曲沃县| 三原县| 元朗区| 腾冲县| 社旗县| 玉树县| 五莲县| 马公市| 张家口市| 永康市| 潼南县| 大姚县| 会泽县| 和林格尔县| 潼关县| 新干县| 团风县| 天峨县| 介休市| 高邮市| 太康县| 松滋市|