国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

10分鐘徹底搞懂Http的強制緩存和協商緩存(小結)

2024-05-06 15:30:59
字體:
來源:轉載
供稿:網友

瀏覽器緩存

瀏覽器緩存是瀏覽器在本地磁盤對用戶最近請求過的文檔進行存儲,當訪問者再次訪問同一頁面時,瀏覽器就可以直接從本地磁盤加載文檔。

所以根據上面的特點,瀏覽器緩存有下面的優點:

減少冗余的數據傳輸 減少服務器負擔 加快客戶端加載網頁的速度

瀏覽器緩存是Web性能優化的重要方式。那么瀏覽器緩存的過程究竟是怎么樣的呢?

在瀏覽器第一次發起請求時,本地無緩存,向web服務器發送請求,服務器起端響應請求,瀏覽器端緩存。過程如下:

在第一次請求時,服務器會將頁面最后修改時間通過Last-Modified標識由服務器發送給客戶端,客戶端記錄修改時間;服務器還會生成一個Etag,并發送給客戶端。

瀏覽器后續再次進行請求時:

瀏覽器緩存主要分為強強緩存(也稱本地緩存)和協商緩存(也稱弱緩存)。根據上圖,瀏覽器在第一次請求發生后,再次發送請求時:

瀏覽器請求某一資源時,會先獲取該資源緩存的header信息,然后根據header中的Cache-Control和Expires來判斷是否過期。若沒過期則直接從緩存中獲取資源信息,包括緩存的header的信息,所以此次請求不會與服務器進行通信。這里判斷是否過期,則是強緩存相關。后面會講Cache-Control和Expires相關。 如果顯示已過期,瀏覽器會向服務器端發送請求,這個請求會攜帶第一次請求返回的有關緩存的header字段信息,比如客戶端會通過If-None-Match頭將先前服務器端發送過來的Etag發送給服務器,服務會對比這個客戶端發過來的Etag是否與服務器的相同,若相同,就將If-None-Match的值設為false,返回狀態304,客戶端繼續使用本地緩存,不解析服務器端發回來的數據,若不相同就將If-None-Match的值設為true,返回狀態為200,客戶端重新機械服務器端返回的數據;客戶端還會通過If-Modified-Since頭將先前服務器端發過來的最后修改時間戳發送給服務器,服務器端通過這個時間戳判斷客戶端的頁面是否是最新的,如果不是最新的,則返回最新的內容,如果是最新的,則返回304,客戶端繼續使用本地緩存。

一 強制緩存

強制緩存整體流程比較簡單,就是在第一次訪問服務器取到數據之后,在過期時間之內不會再去重復請求。實現這個流程的核心就是如何知道當前時間是否超過了過期時間。

強制緩存的過期時間通過第一次訪問服務器時返回的響應頭獲取。在 http 1.0 和 http 1.1 版本中通過不同的響應頭字段實現。

http 1.0

在 http 1.0 版本中,強制緩存通過 Expires 響應頭來實現。 expires 表示未來資源會過期的時間。也就是說,當發起請求的時間超過了 expires 設定的時間,即表示資源緩存時間到期,會發送請求到服務器重新獲取資源。而如果發起請求的時間在 expires 限定的時間之內,瀏覽器會直接讀取本地緩存數據庫中的信息(from memory or from disk),兩種方式根據瀏覽器的策略隨機獲取。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 和静县| 凤台县| 罗源县| 枣强县| 尖扎县| 穆棱市| 花垣县| 大厂| 奉化市| 和田县| 库伦旗| 潮安县| 和平县| 江达县| 恩平市| 北宁市| 闽侯县| 承德县| 西宁市| 枞阳县| 拜城县| 云和县| 达日县| 阿拉尔市| 金山区| 兴仁县| 敖汉旗| 肃南| 灌南县| 蚌埠市| 武乡县| 客服| 巨鹿县| 兴城市| 瑞丽市| 兴山县| 日喀则市| 宣武区| 疏附县| 洛浦县| 大足县|