代理緩存伺服器的限制?

代理緩存伺服器的限制?

我有一個關於代理快取伺服器的普遍問題。

為了建立一個假設的場景,我一直在考慮在家中安裝代理快取伺服器,以嘗試幫助減少流經路由器的流量(ISP 對資料總量有上限)可以使用)。伺服器將位於路由器內部,因此路由器將不知道某些資料正在存儲

在這種情況下,代理快取伺服器的效果如何? (另外,我還可以採取什麼其他方法來減少通過路由器的網路流量)

代理伺服器可以快取網站上的單張圖片嗎?例如,論壇經常更新內容,但網站上顯示的圖像不會更改。可以保存一些有關網站的資訊嗎?或者由於其動態容量,所有網頁都必須再次請求?

我對代理伺服器的功能還比較陌生,如果我能找到足夠的相關信息,我最終希望將其應用到我的 IT 工作中。

答案1

代理伺服器可以快取網站上的單張圖片嗎?

是的。

由於其動態容量,是否必須再次要求所有網頁?

動態部分必須重新獲取,代理應該透過檢查頁面的每個單獨獲取的元素中的代理控制標頭來處理此問題。


以下是 Chrome 的 Wireshark 捕獲從超級用戶獲取網頁的簡短(已編輯)範例

客戶要求

GET /questions/419790/confused-by-cpu-model HTTP/1.1
Host: superuser.com
Connection: keep-alive
User-Agent: …Chrome…
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: http://superuser.com/questions
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: …

伺服器回應

HTTP/1.1 200 OK
Cache-Control: public, max-age=60
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Expires: Wed, 02 May 2012 19:41:23 GMT
Last-Modified: Wed, 02 May 2012 19:40:23 GMT
Vary: *
Date: Wed, 02 May 2012 19:40:23 GMT
Content-Length: 9831

請注意Cache-Control: public, max-age=60,這Expires: Wed, 02 May 2012 19:41:23 GMT就是伺服器嘗試控制每條內容的快取方式的方式。超級用戶問題頁面可能有數十或數百個此類單獨獲取的元素。

讀什麼W3C 關於快取控制的說法

Cache-Control 通用標頭欄位用於指定請求/回應鏈上的所有快取機制必須遵守的指令。這些指令指定了旨在防止快取對請求或回應產生不利幹擾的行為。這些指令通常會覆蓋預設的快取演算法。快取指令是單向的,因為請求中指令的存在並不意味著回應中將給出相同的指令。

之後

民眾
指示回應可以由任何快取進行緩存,即使它通常不可緩存或僅在非共享快取中可緩存。 (有關更多詳細信息,另請參閱第 14.8 節“授權”。)

私人的
指示全部或部分回應訊息適用於單一用戶,且不得由共享快取進行快取。這允許來源伺服器聲明回應的指定部分僅適用於一個用戶,並且不是對其他用戶的請求的有效回應。私有(非共享)快取可以快取回應。注意:「私有」一詞的這種用法僅控制可以快取回應的位置,並不能確保訊息內容的隱私。

無緩存
如果 no-cache 指令未指定欄位名稱,則在未成功與來源伺服器重新驗證的情況下,快取不得使用回應來滿足後續要求。這允許來源伺服器阻止緩存,即使快取已配置為向客戶端請求返回過時的回應。

等等——這是一個很大的主題領域。

相關內容