摘要:服務器告訴客戶,原來緩沖的文檔還可以繼續使用。不是服務器發出的錯誤提示。如果相同,則獲取本地的緩存信息,反之服務器返回新的資源。服務器靜態資源修改了,返回的,也會修改這個是樂視網首頁第二次請求時的截包,會發現靜態資源的返回基本都是
http 304
原理好久沒寫了。感覺荒廢了好久。剛好今天有朋友問我關于靜態資源緩存問題。突然喚起我的學習興趣了。
發現好多同學對靜態資源都不是很清楚。小弟我剛好有一點心得。和大家分享一下。其實就是當作我的筆記。歡迎指正。
http 304 Not Modified
意思是:Not Modified 客戶端有緩沖的文檔并發出了一個條件性的請求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)。服務器告訴客戶,原來緩沖的文檔還可以繼續使用。
HTTP/1.1 304 Not Modified不是服務器發出的錯誤提示。而是服務器所承載的業務系統在開發時為了節省鏈路帶寬和提升瀏覽器的體驗對GET/js、css、image等執行了緩存機制。
在做http請求分析之前,一定要了解這個參數HTTP/1.1 304 Not Modified不是服務器發出的錯誤提示。而是服務器所承載的業務系統在開發時為了節省鏈路帶寬和提升瀏覽器的體驗對GET/js、css、image等執行了緩存機制。客戶端在第一次對服務器業務發出GET請求后,客戶端瀏覽器緩存了該頁面,當客戶端第二次對服務器發出同樣的GET請求時,若客戶端緩存中的If-Modified-Since過期,客戶端將向服務器發出GET請求,驗證If-Modified-Since和If-None-Match是否與WEB-server中信息一致,如果GET頁面未做任何修改,服務器對客戶端返回HTTP/1.1 304 Not Modified,客戶端則直接從本地緩存中將頁面調取
requset請求
(1)If-Modified-Since:發送請求時與服務器
(2)If-None-Match:
response返回
(1)Last-Modified:資源被修改的最后時間
(2)ETag:對資源的索引節(INode),大小(Size)和最后修改時間(MTime)進行Hash后得到的,是資源的唯一標識
特別注意:
(1)該兩項參數將存儲在客戶端的瀏覽器cache中,Last-Modified值存儲為 If-Modified-Since,ETag值存儲為If-None-Match.
(2)ETag的優先級高于Last-Modified.
請求過程發生了什么 第一次請求:客服端發送請求-》本地無緩存-》向服務發送請求-》返回靜態資源,并且緩存到本地
這個是樂視網首頁第一次請求時的截包,會發現靜態資源的返回都是200
第二次請求:再這次請求中,http請求頭部包括了If-Modified-Since,If-None-Match這兩個參數與服務器做對比。如果相同,則獲取本地的緩存信息,反之服務器返回新的資源。并且Last-Modified,ETag數據重置。
服務器靜態資源修改了,response返回的Last-Modified,ETag也會修改
這個是樂視網首頁第二次請求時的截包,會發現靜態資源的返回基本都是304
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/91566.html
摘要:服務器告訴客戶,原來緩沖的文檔還可以繼續使用。不是服務器發出的錯誤提示。如果相同,則獲取本地的緩存信息,反之服務器返回新的資源。服務器靜態資源修改了,返回的,也會修改這個是樂視網首頁第二次請求時的截包,會發現靜態資源的返回基本都是 http 304 好久沒寫了。感覺荒廢了好久。剛好今天有朋友問我關于靜態資源緩存問題。突然喚起我的學習興趣了。發現好多同學對靜態資源都不是很清楚。小弟我剛好...
閱讀 2629·2021-11-23 09:51
閱讀 861·2021-09-24 10:37
閱讀 3612·2021-09-02 15:15
閱讀 1962·2019-08-30 13:03
閱讀 1881·2019-08-29 15:41
閱讀 2624·2019-08-29 14:12
閱讀 1424·2019-08-29 11:19
閱讀 3301·2019-08-26 13:39