檔案資訊:
content-length: 2000
content-type:指定請求和響應的內容型別,如果未指定即為text/html
常用的content-type
text/plain:普通文字
tex/html:html文字
multipart/form-data:用在傳送檔案的post包中
content-length:用於指定請求或相應的內容長度
1.如果存在transfer-encoding(chuncked)則在頭資訊中不能有content-type有也會被忽略
2.如果是短連線則可以通過關閉連線來確定長度
3.content-length必須與傳輸內容長度相同,過長會導致超時,過短會直接截斷
4.http1.1之前不支援keep-alive,content-length可有可無。http1.1若為keep-alive則chuncked和content-length必須二選一,若為非keep-alive則content-length可有可無
壓縮:
accept-encoding: gzip編碼方式content-encoding: gzip
壓縮流程:
1.瀏覽器在傳送請求時會帶上accept-encoding頭資訊,裡面有瀏覽器支援的所有壓縮方式。
2.伺服器在接收到瀏覽器發過來的資訊之後,對accept-encoding裡面的資訊進行判斷,選擇合適的壓縮方式對相應內容進行壓縮,然後增加content-encoding頭資訊,將其改為當前使用的壓縮方式名,將響應發回瀏覽器。
3.瀏覽器接收到響應後,通過對content-encoding中的資訊進行判斷,選擇合適的解壓方式進行解壓,並展示
**快取:
vary: accept-encoding**快取,從伺服器到瀏覽器可能經過多個中間體,如:快取伺服器。現在很多應用都用到了快取機制,而乙個url可能會返回多個文件,中間伺服器應該快取哪些,瀏覽器請求時應該返回哪些文件,這就涉及到瀏覽器和伺服器之間的乙個內容協商問題。
一般有兩種方式:
1)伺服器每次都返回多個版本,300(mutiple choices),讓瀏覽器自己選擇,但是這種會導致多一次網路請求,還有就是某些版本的文件是給具有特殊功能(比如壓縮)的瀏覽器準備的,讓普通使用者選可能會出現問題
2)伺服器根據瀏覽器傳送的accept欄位來選擇合適的內容傳送
請求字段
字段說明
響應頭欄位
accept
告知伺服器接收哪種**型別
content-type
accept-encoding
告知伺服器接收哪種壓縮形式
content-encoding
accept-language
告知伺服器接受哪種語言
content-language
accept-charset
告知伺服器接收哪種編碼方式
content-type
有時候這四個字段不夠用會用user-agent和cookie一塊判斷,這時候就需要加乙個
vary: user-agent, cookie一般來說只需要在vary中寫除了accept-*之外的字段,但是存在一些伺服器對這個機制實現有bug,它們會直接忽略響應頭中的content-encoding,從而可能會給不支援壓縮的瀏覽器發回壓縮後的文件,所以如果有壓縮的話,需要給響應頭中增加accept-encoding使得bug伺服器能夠正確的快取。
快取:
expires: mon, 24 feb 2014 03:34:00gmt注意點: 1.時間格式必須為gmt時間格式,其他時間格式,其餘的時間格式都會被當成之前的時間cache-control: max-age=3600if-none-match: "b3234c-9999-45334a15"etag: "b3234c-9999-45334a15"if-modified-since: mon, 24 feb 2014 03:34:00gmt
last-modified: mon, 24 feb 2014 03:34:00 gmt
2.快取方時間必須和伺服器時間一致,不然會導致提前或延遲更新
cache-control:快取控制
常用的有以下幾種屬性值
max-age:指示在多少秒之內,快取方不用向伺服器傳送這個檔案的請求,直接使用快取。在max-age時間之內,瀏覽器請求該檔案的響應總是為200(from cache)
no-cache:強制快取方必須每次都向伺服器傳送請求,由伺服器決定快取方儲存的是否為最新的檔案。如果為最新的,伺服器就會返回304(not modified),快取方直接使用快取;如果不是最新返回200,並返回最新的檔案。一般配合last-modified或etag一起使用。
no-store:強制快取方永遠不快取該檔案,每次都是向伺服器請求最新的檔案
public:表示任何快取方都可快取該響應
private:只會快取給該使用者不會共享快取
etag/if-none-match:
1)快取方第一次請求時,伺服器返回的響應頭中會包含乙個etag的hash
2)之後每次快取方向伺服器請求時都會包含乙個if-none-match頭資訊,內容為伺服器返回的etag,然後伺服器對這個頭資訊進行判斷,如果為最新的,伺服器就會返回304(not modified),快取方直接使用快取;如果不是最新返回200,並返回最新的檔案,更新etag欄位。
last-modified/if-modified-since:
1)快取方第一次請求時,伺服器返回的響應頭中會包含乙個last-modified頭資訊,內容為該檔案的最後更新時間
2)之後每次快取方向伺服器請求時都會包含乙個if-modified-since頭資訊,內容為伺服器返回的last-modified,然後伺服器對這個頭資訊進行判斷,如果為最新的,伺服器就會返回304(not modified),快取方直接使用快取;如果不是最新返回200,並返回最新的檔案,更新last-modified欄位。
總結:expires和cache-control為快取方判斷是直接讀取快取還是向服務端發請求的字段,只不過cache-control比expires控制的要多一點
長連線:
connection: keep-alive將connection設定為keep-alive可以讓多個連線共用乙個tcp連線,提高了互動效率keep-alive: timeout=20, max=2
keep-alive用來設定該連線的過期時間,上例中20秒後或者在該連線中請求了兩次後斷開
connection可為請求或者響應頭,keep-alive僅為響應頭。
重定向:
前端學習須知
首先在學習前我們要了解下預備的知識!從輸入 到頁面呈現都發生了什麼?第一步 1 當我們在位址列輸完網域名稱進行伺服器訪問時,首先會先查詢本地的hosts檔案裡面是否會有此網域名稱的ip對映關係,如果沒有則繼續查詢本地dns快取中是否還有這個對映關係,經過幾個快取的查詢,如果均沒有找到,那麼dns伺服...
前端網路必須知道的點
allow control access origin 必需,表示可以請求的源。access control allow methods 必需,表示支援的所有方法,以逗號分隔 access control allow headers 如果瀏覽器請求包括 access control req方法,以逗...
前端必須知道的Nginx的常用配置
負載均衡 反向 動靜分離 配置https 負載均衡是一門計算機網路技術,主要用來優化資源使用 最大化吞吐率 最小化響應時間 同時避免過載的目的。如果乙個 只有一台伺服器的話,如果這台伺服器宕機了,那麼整個 將無法正常訪問。當訪問 人數過多,併發量達到一定規模,超過伺服器效能的極限,整個 也將無法訪問...