摘要:狀態碼,可避免請求發送到服務器。可以通過標識文件版本名加長緩存時間的方式來減少響應。
推薦閱讀:
伯樂在線——HTTP 緩存機制一二三
IMWeb前端博客——HTTP緩存控制小結
IT筆錄——http消息頭
關鍵頭部字段
cache-control、 Pragma
if-Match、if-None-Match
if-Modified-Since、if-Unmodified-Since
ETag
Expires、Last-Modified
Pragmahttp1.0可用,現在為了向下兼容,也設置該頭部,只有一個值:no-cache禁用緩存
Expires設置緩存時間(該時間相對于服務器),接受一個GMT(格林尼治時間),用來告訴瀏覽器過期時間,如果還沒有過這個時間則不發送請求。
Expires: Sun Jul 15 2018 19:13:07 GMTcache-control
也可用來設置緩存時間,http1.1與http1.0可用,三者優先級:
Pragma > Cache-Control > Expires
可設置多個值,比如常用的:no-cache, max-age, public, private
Last-Modified接受一個格林尼治時間,說明資源的最近一次的修改時間,該字段的作用是當某個資源保存的緩存時間過期了,但服務器并沒有更新過這個資源,那么可以告訴客戶端此資源沒有更新,可以獲取緩存中的內容(返回304,不返回實體內容)
if-Modified-SinceLast-Modified的值會在下一次的請求中通過if-Modified-Since傳遞給服務器,如果它的值和此時服務器的Last-Modified值一致,說明沒有修改,服務器返回304。如果不一致則當作正常請求處理,返回資源和200狀態碼。
ETag服務端資源有可能被更新了,但是實際內容并沒有改變。但是這樣依然會引起Last-Modified的更新,服務器給客戶端返回沒有任何改變的內容。為了解決這個問題,引入了ETag。用于http1.1。
服務器為資源生成一個唯一的字符串,如通過md5編碼。只要不變,生成的字符串就不變。在客戶端請求資源的時候,將該ETag一起返回給客戶端,客戶端保留該ETag,下次請求的時候帶上。然后比較ETag,相同則表示內容相同,返回304;不同,返回資源和200狀態碼。
ETag的值會通過if-None-Match頭部傳遞給服務器,然后服務器比較ETag的值,相同則表示內容相同,返回304;不同,返回資源和200狀態碼。
另外的 if-None-Match,if-Unmodified-Since他們不是用來實現緩存策略的,而是用來優化并發控制,他們的作用是,使得當前請求成為條件式請求:只有當資源在指定的時間之后沒有進行過修改的情況下,服務器才會返回請求的資源,或是接受 POST 或其他 non-safe 方法的請求。例如在某些場景:假如在原始副本獲取之后,服務器上所存儲的文檔已經被修改,那么對其作出的編輯會被拒絕提交。
總結Expires / Cache-Control用來設置緩存時間,即資源有效時間。狀態碼 200(from cache),可避免請求發送到服務器。
Last-Modified / ETag用來判斷資源是否被修改了。狀態碼 304(not change),可避免傳輸相同的資源內容,造成帶寬和時間的浪費。
使用原則需要兼容HTTP1.0的時候需要使用Expires,不然可以考慮直接使用Cache-Control
需要處理一秒內多次修改的情況,或者其他Last-Modified處理不了的情況,才使用ETag,否則使用Last-- Modified。
對于所有可緩存資源,需要指定一個Expires或Cache-Control,同時指定Last-Modified或者Etag。
可以通過標識文件版本名、加長緩存時間的方式來減少304響應。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/96155.html
摘要:如果沒有學習過計算機科學的程序員,當我們在處理一些問題時,比較熟悉的數據結構就是數組,數組無疑是一個很好的選擇。 showImg(https://segmentfault.com/img/bVTSjt?w=400&h=300); 1、常見 CSS 布局方式詳見: 一些常見的 CSS 布局方式梳理,涉及 Flex 布局、Grid 布局、圣杯布局、雙飛翼布局等。http://cherryb...
摘要:如果沒有學習過計算機科學的程序員,當我們在處理一些問題時,比較熟悉的數據結構就是數組,數組無疑是一個很好的選擇。 showImg(https://segmentfault.com/img/bVTSjt?w=400&h=300); 1、常見 CSS 布局方式詳見: 一些常見的 CSS 布局方式梳理,涉及 Flex 布局、Grid 布局、圣杯布局、雙飛翼布局等。http://cherryb...
摘要:歡迎來我的個人站點性能優化其他優化瀏覽器關鍵渲染路徑開啟性能優化之旅高性能滾動及頁面渲染優化理論寫法對壓縮率的影響唯快不破應用的個優化步驟進階鵝廠大神用直出實現網頁瞬開緩存網頁性能管理詳解寫給后端程序員的緩存原理介紹年底補課緩存機制優化動 歡迎來我的個人站點 性能優化 其他 優化瀏覽器關鍵渲染路徑 - 開啟性能優化之旅 高性能滾動 scroll 及頁面渲染優化 理論 | HTML寫法...
閱讀 2650·2023-04-26 00:42
閱讀 2799·2021-09-24 10:34
閱讀 3810·2021-09-24 09:48
閱讀 4145·2021-09-03 10:28
閱讀 2576·2019-08-30 15:56
閱讀 2771·2019-08-30 15:55
閱讀 3254·2019-08-29 12:46
閱讀 2244·2019-08-28 17:52