HTTP之緩存命中


緩存命中和緩存未命中

========================摘自《HTTP權威指南》==============================

1、緩存命中和緩存未命中

可以用已有的副本為某些到達緩存的請求提供服務,這被稱為緩存命中(cache-hit)參見圖7-4a。其他一些到達緩存的請求可能會由於沒有副本可用,而被轉發給原始服務器,這被稱為緩存未命中(cache-miss)參見圖7-4b。

 

(1)、再驗證

原始服務器的內容可能會發生變化,緩存要不時的對其進行檢測,看看它們保存的副本是否仍是服務器上最新的副本。這些“新鮮度檢測”被稱為HTTP再驗證(revalidation)參見圖7-4c。為了有效的進行再驗證,HTTP定義了一些特殊的請求,不用從服務器上獲取整個對象,就可以快速檢測出內容是否是最新的。

緩存可以在任意時刻,以任意頻率對副本進行再驗證。但由於緩存中通常會包含數百萬的文檔,而且網絡寬帶是很珍貴的,所以大部分緩存只有在客戶端發起請求,並且副本舊的足以需要檢測的時候才會對副本進行再驗證。

緩存對緩存的副本進行再驗證時,會向原始服務器發送一個小的再驗證請求。如果內容沒有變化,服務器會以一個小的304Not Modified進行響應。只要緩存知道副本仍然有效,就會再次將副本標識為暫時新鮮的,並將副本提供給客戶端,見圖7-5a,這杯稱為再驗證命中(revalidation hit)或緩慢緩慢命中(slow hit),這種方式確實要與原始服務器進行核對,所以要比單純的緩存命中要慢,但它沒有從原始服務器中獲取對象數據,所以要比緩存未命中要快一些。

HTTP為我們提供了幾個用來對已緩存對象進行再驗證的工具,但最常用的是If-Modified-Since首部。將這個首部添加到GET請求中去,就可以告訴服務器,只有在緩存了對象的副本之后,又對其進行修改了情況下,才發送此對象。

這里列出了在3種情況下(服務器內容未被修改,服務器內容已被修改,或者服務器上的對象被刪除了)服務器收到GET If-Modified-Since請求時會發生的情況:

A、 再驗證命中

如果服務器對象未被修改,服務器會向客戶端發送一個小的HTTP 304 Not Modified的響應。

 

B、 再驗證未命中

如果服務器對象與緩存副本不同服務器會向客戶端發送一條普通的、帶有完整內容的HTTP 200 oK響應;

C、 對象被刪除

如果服務器對象已經被刪除了,服務器就會回送一個404 NOT Found響應,緩存也會將其副本刪除。

(2)、命中率

由緩存提供服務的請求所占的比例被稱為緩存命中率(cache hit rate或稱為緩存命中比例),有時也被稱為文檔命中率(document hit rate)。命中率在0到1之間,但通常用百分數來描述的,0%表示每次請求都未命中(要通過網絡來獲取文檔),100%表示每次請求都命中了(在緩存中有一份副本)。

緩存的管理者希望緩存命中率接近100%。而實際得到的命中率則與緩存的大小、緩存用戶興趣點的相似性、緩存數據的變化或個性化頻率,以及如何配置緩存有關。命中率很難預測,但對現在中等規模的web緩存來說,40%的命中率是很合理的。緩存的好處是,即使是中等規模的緩存,其所包含的常見文檔也足以顯著的提高性能、減少流量了。緩存會努力確保將有用的內容保存在緩存中。

(3)、字節命中率

由於文檔並不全是統一尺寸的,所以文檔命中率並不能說明一切。有些大型對象被訪問的次數比較少,但由於尺寸的原因,對整個數據流量貢獻卻更大。因此,有些人更願意用字節命中率(byte hit rate)作為度量值(尤其那些按流量字節付費的人)。

字節命中率表示的是緩存提供的字節在傳輸的所有字節中所占的比例。通過這種度量方式,可以得知節省流量的程度。100%的字節命中率說明每個字節都來自緩存,沒有流量流到因特網上。

文檔命中率和字節命中率對緩存性能的評估都是很有用的。文檔命中率說明阻止了多少通往外部的web事務。事務有一個通常很大的固定時間成分(比如,建立一條到服務器的TCP連接),提高文檔命中率對降低整體延遲(時延)很有好處。字節命中率說明阻止了多少字節傳向因特網。提高字節命中率對節省寬帶很有利。

(4)、區分命中和未命中的情況

不幸的是,HTTP沒有為用戶提供一種手段來區分響應是緩存命中的,還是訪問原始服務器得到的。在這兩種情況下,響應碼都是200OK,說明響應有主題部分。有些商業代理緩存會在Via首部附加一些額外信息,以描述緩存中發生的情況。

客戶端有一種方法可以判斷響應是否來自緩存,就是使用Date首部。將響應中Date首部的值與當前時間進行比較,如果響應中的時間比較早,客戶端通常就可以認為這是一條緩存的響應。客戶端也可以通過Age首部來檢查緩存的響應,通過這個首部可以分辨出這條響應的使用期。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM