當前位置:編程學習大全網 - 源碼破解 - http緩存過程

http緩存過程

註:http 緩存只能緩存 get 方式請求的資源

緩存是指 代理服務器 客戶端本地磁盤 內保存的資源副本。利用緩存可減少對源服務器的訪問,因此也就節省了通信流量和通信時間。

緩存服務器是代理服務器的壹種,並歸類在緩存代理類型中。換句話說, 當代理轉發從服務器返回的響應時,代理服務器將會保存壹份資源的副本

緩存服務器的優勢在於利用緩存可避免多次從源服務器轉發資源。因 此客戶端可就近從緩存服務器上獲取資源,而源服務器也不必多次處 理相同的請求了。

瀏覽器緩存分 強制緩存 協商緩存 ,分別使用的字段前者是Expires和Cach-control,後者是 Etag 和 Last-modified。

Expires (http/1.0):設的是資源的過期時間(絕對時間),瀏覽器判斷這次請求的時候是不是超過這個日期,沒超的話就直接讀取緩存中的資源,不向服務器發請求。

Pragma :字段值為“no-cache”的時候,會通知客戶端不要對該資源讀緩存,即每次都得向服務器發壹次請求才行。但是這種禁用緩存的形式作用不是那麽太大:1. 僅有IE才能識別這段meta標簽含義,其它主流瀏覽器僅能識別“Cache-Control: no-store”的meta標簽。2. 在IE中識別到該meta標簽含義,並不壹定會在請求字段加上Pragma,但的確會讓當前頁面每次都發新請求,但是僅限頁面,頁面上的資源則不受影響。

如果Pragma和Expires壹起出現的話,Pragma的優先級是高的。

Cach-Control (http/1.1):緩存控制 示例:

Cache-Control 有三種屬性:緩沖能力、過期時間和二次驗證。

緩沖能力:

過期時間:

二次驗證:

Expires使用的是服務端時間,可能出現客戶端和服務端時間不同步,導致本地緩存無用或無法過期。

Max-Age使用的是客戶端本地時間的計算,不會出現這個問題,推薦Max-Age。

如果同時啟用了Cache-Control和Pragma ,Expires,Cache-Control優先級高。

Last-Modified / If- Modified-Since (http/1.0):判斷資源最後修改時間,只要這個日期改變了就不使用緩存。瀏覽器的頭部是If- Modified-Since,服務端的是Last-Modified,如果兩個匹配,代表服務器資源未改變,服務端不會返回資源實體,只返回頭部,通知瀏覽器使用緩存。

缺點:可能有些文件會周期性地改變日期,但是內容其實沒變,但是該字段只判斷最後修改時間,

E-tag / If-None-Match (http/1.1):Etag 是服務器針對請求的資源文件生成的唯壹標識,只要文件內容沒變化,則Etag值不變,克服了 Last-Modified / If- Modified-Since 的缺點。瀏覽器的頭部是If-None-Match,服務端的是E-tag,如果兩個匹配,代表內容未改變,通知瀏覽器使用緩存。

Etag 缺點:不適用於分布式系統 ,因為每個服務器上的 Etag 值不同。

如果同時帶有E-tag和Last-Modified,服務端優先檢查E-tag。

  • 上一篇:《高護木的規矩》最新txt全集下載
  • 下一篇:7837
  • copyright 2024編程學習大全網