HTTP快取&代理

zzz紫川發表於2016-12-18

一、與快取有關的Header

1、Request           

If—Modified—Since:           快取檔案的最後修改時間

If—None—Match:                               快取檔案的ETag值

Cache—Control:no—cache                   不使用快取

Pragma:no—cache                              不使用快取

2、Reaponse

Cache—Control:public         響應被快取,並且各使用者共享

          private       私有快取

          no—cache   提醒瀏覽器要從伺服器提取文件驗證

          no—store    絕對禁止快取(用於機密檔案)

          max—age   60s後快取過期(相對時間)

Date:當前Response傳送的時間

Expires:快取過期的時間(絕對時間)

Last—Modified:伺服器端檔案的最後修改時間

ETag:伺服器端檔案的ETag值

3、為何使用ETag

  ETag由伺服器端產生,然後傳送給客戶端。主要是為了解決Last—Modified無法解決的問題:

  a)某些伺服器不能精確得到檔案的最後修改時間; 

  b)某些檔案的修改非常頻繁,在秒以下的時間內修改,Last—Modified只能精確到秒;

  c)一些檔案的最後修改時間改變了,但是內容並未改變,我們不希望客戶端認為這些檔案修改了;

二、幾種重新整理方式

  對一個資源,瀏覽器第一次訪問,獲取資源內容和cache-control: max-age:600,Last_Modify: Wed, 10 Aug 2016 26 GMT,於是瀏覽器把資原始檔放在快取中。

1、輸入瀏覽器url位址列,回車

瀏覽器直接使用本地有效的快取,不傳送任何請求,直接從快取中讀取。(這種情況名為  快取命中)

2、F5

瀏覽器會去Web伺服器驗證快取(傳送一個請求,帶上Last_Modify: Wed, 10 Aug 2016 26 GMT),伺服器若在這個時間後未修改檔案,直接返回304,瀏覽器就會去快取中獲取資源。

3、Ctrl+F5(強制重新整理)

瀏覽器先把快取中的檔案刪除,然後去伺服器端請求完整最新的資源。

三、代理伺服器

1)對客戶端來說,代理伺服器扮演著伺服器的角色,接收Request,返回Response

2)對伺服器來說,代理伺服器扮演著客戶端的角色,傳送Request,返回Request

PS:常用的抓包工具Fiddler、HTTP Watch、Charles(青花瓷)、Wireshark(鯊魚)等都可以看成一個代理伺服器。LR的原理也是代理

四、代理的作用

1)FQ(這一點我就不說明了)

2)匿名訪問[通過刪除報文中的身份特性(客戶端的IP地址、Cookie等),從而對遠端伺服器隱藏原始使用者的IP地址及其他細節]

3)通過代理連線因特網

4)通過代理快取,加快上網速度

5)兒童過濾器(eg:校園網禁止未成年訪問成人網站)

代理認證:當瀏覽器訪問需要認證的代理時,代理伺服器會返回407,告訴瀏覽器輸入使用者名稱密碼。

相關文章