HTTP Cache怎樣計算Age

來源:互聯網
上載者:User

標籤:頭資訊   方式   方法   負數   獨立   ted   ons   添加   而不是   

這裡的Age指的是回應標頭Age。以下內容有部分翻譯,也有部分自己的理解。歡迎討論。

我們用now表示當前主機的目前時間,用request_time表示緩衝發起請求的時間,用response_time表示緩衝收到響應的時間。

HTTP/1.1要求源server的每個響應都包括一個Date頭資訊。表示這個響應被源server建立的時間,我們用date_value表示這個Date頭的值。

HTTP/1.1使用Age回應標頭表示響應從緩衝中拿到時響應的壽命,我們用age_value表示Age頭的值。

緩衝中響應的壽命能夠通過兩種全然獨立的方式計算:

1.        直接用response_time(緩衝收到響應的時間)減去date_value(響應被建立的時間),假設為負數,用0替代。

2.        假設響應路徑上的全部緩衝實現了HTTP/1.1,則直接用age_value值。

但實際上,我們非常難保證響應路徑上的全部緩衝都實現了HTTP/1.1,所以。同一時候使用這兩種方式。然後進行修正,結果會更可靠:

corrected_received_age= max(response_time - date_value, age_value);

到這裡還沒有完畢終於計算,corrected_received_age僅僅是緩衝收到響應時,響應的壽命,沒有考慮響應到下一個緩衝或client的網路延遲時間。

由於網路會有延遲,在傳輸過程中壽命已經添加了。下一個緩衝就得考慮這個因素。對於這個因素,HTTP/1.1採用了一種比較保守的計算方法。假設從請求發起到收到響應的時間就是網路延遲的時間(結果不一定就是實際經過的時間),用response_delay表示:

response_delay= response_time – request_time;

corrected_initial_age= corrected_received_age + response_delay;

response_delay一般指最後一個緩衝到client的延誤時間,假設響應路徑上有多個緩衝。不須要迭代。由於corrected_received_age是依據緩衝收到響應的時間,已經減去了前面的網路延遲。

以上還僅僅是計算響應第一次出如今緩衝中時已經擁有的壽命。響應一旦被緩衝,就可能被多次使用,這個時候,響應的壽命就得由緩衝來計算了。

我們用resident_time表示響應在緩衝中貯存的時間。用current_age表示響應的當前壽命:

resident_time= now - response_time;

current_age= corrected_initial_age + resident_time;

假設響應路徑中有緩衝。請求終於受到的回應標頭Age相應的值是current_age。而不是server最初給的Age,由於這個值被緩衝已經改動過了。

HTTP Cache怎樣計算Age

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.