web快取是可以自動儲存常見文件副本的http裝置(包括瀏覽器?)
減少冗餘資料傳輸
緩解頻寬瓶頸(很多網路為本地網路客戶端提供的頻寬比為遠端伺服器提供的頻寬要寬)
緩解瞬時擁塞(不會所有的請求都奔著一台伺服器去)
降低距離時延(就近訪問麼)
命中率:請求命中快取的比例
位元組命中率:請求命中快取的文件,其文件大小總和,佔所有請求大小總和的比例(一些大文件儘管訪問少,但對流量貢獻大,對於按流量計費的人來說很重要)
客戶端如何判斷請求是否命中快取:它能夠過date首部,如果date的值比當前日期值要早,那麼可以認為是快取的響應。
http通過以下兩種機制來實現這樣的目的:不要求伺服器記住哪些快取擁有資源副本,同時保持已快取資料與伺服器資料之間的一致。
1. 文件過期(document expiration)—— cache-control、expires
2. 伺服器再驗證(server revalidation)—— if-modified-since(時間)、if-none-match(結合etag)
expires: fri, 05 jul 2002, 05:00
:00gmt
從伺服器將資源傳送過來時算起,文件處於新鮮的時間(單位為秒)。可通過將其設為0,來請求快取(伺服器)不要快取資源。舉例:
cache-control: max-age=0
名字比較有歧義,實際表達的意思是:快取(伺服器)在與原始伺服器進行新鮮度再驗證前,不能將資源提供給客戶端使用。這裡包含兩個點:
標識為no-cache
的響應實際是可以儲存在本地緩衝區的
必須每次與原始伺服器再校驗
舉例:
cache-control: no-cache
帶有no-store
的響應,會禁止快取對資源進行複製。快取向客戶端**no-store
響應後,會將副本刪除。
可以使用陳舊(過期)的資源以提高效能。但在沒有與原始伺服器進行再驗證的情況下,不能使用資源的陳舊副本。
與no-cache
的區別:
no-cache
:無論資源副本是否過期,都必須與原始伺服器進行校驗
must-revalidate
:資源副本過期前,無需校驗;過期後,須校驗,如原始伺服器上的資源沒變化,那麼快取可以提供陳舊的副本。(減少資源傳輸)
詢問伺服器,資源在if-modified-since
指定的時間之後,是否被修改了,如果
沒被修改:返回304 not modified
響應報文,同時只會傳送需要在源端更新的首部,比如新的過期時間。
被修改了:攜帶新首部的資源會被返回給快取,包括新的過期時間。
例子:
if-modified-since: sat, 29 jun 2002, 14:30
:00gmt
etag:實體標籤(entity tag)。etag再驗證的原因:
有些文件會被周期性地重寫,但實際包含的資料常常是一樣的,但修改時間已經發生變化。
文件被修改了,但修改並不重要,不需要讓所有快取都失效。
某些伺服器無法準確判斷資源的最後修改時間。
流程與if-modified-since
差不多,帶上etag
去伺服器查詢,如果
etag發生變化:返回帶有新etag的資源
etag沒變化:返回304 not modified
例子:
if-none-match: "v2.6
if-none-match: "v2.6","v2.7"(告訴伺服器,帶有這些實體標籤的副本快取上已有了)
《HTTP權威指南》讀書筆記 快取
web快取是可以自動儲存常見文件副本的http裝置 包括瀏覽器?減少冗餘資料傳輸 緩解頻寬瓶頸 很多網路為本地網路客戶端提供的頻寬比為遠端伺服器提供的頻寬要寬 緩解瞬時擁塞 不會所有的請求都奔著一台伺服器去 降低距離時延 就近訪問麼 命中率 請求命中快取的比例 位元組命中率 請求命中快取的文件,其文...
Http權威指南讀書筆記
1.1 http使用的是可靠的資料傳輸協議。1.3 型別 mime型別 multipurpose internet mail extension多用途網際網路郵件擴充套件 是為了解決在不同的電子郵件系統之間搬移報文時存在的問題。mime在電子郵件系統中工作得非常好,因此http也採納了它,用它來描述...
《HTTP權威指南》讀書筆記(二)
get 向伺服器請求資源 post 向伺服器請求資源並提交資料 head 請求伺服器,但僅返回首部,不包含主體內容 put 向伺服器寫入文件 向伺服器的資源中儲存資料 options 詢問伺服器支援的方法有哪些 trace 跟蹤請求,環迴 診斷 最後一站的伺服器會返回一條trace響應,包含伺服器接...