HTTP常用方法,狀態(tài)碼,請求報(bào)文與響應(yīng)報(bào)文格式
HTTP協(xié)議的缺點(diǎn)
安全方面
a、通信使用明文不加密,內(nèi)容可能被竊聽
b、不驗(yàn)證通信方身份,可能遭到偽裝
c、無法驗(yàn)證報(bào)文完整性,可能被篡改
其他
HTTP頭消耗不必要的流量;
不方便主動(dòng)推送消息(WebSocket,輪詢);
HTTPS交互過程

http://www.itdecent.cn/p/ba92b59a6e2e
https://imququ.com/post/optimize-tls-handshake.html
HTTPS的缺點(diǎn)
1.握手階段造成計(jì)算消耗大,交互次數(shù)多,影響訪問速度;
2.一般網(wǎng)站由HTTP跳轉(zhuǎn)到HTTPS的方式增加了訪問耗時(shí);
3.安全算法消耗CPU資源;
4.某些SSL證書要錢;
Connection: Keep-Alive
HTTP1.1中所有請求都默認(rèn)為長連接(服務(wù)端可能有默認(rèn)連接超時(shí)時(shí)間)
優(yōu)點(diǎn)
1.不需要經(jīng)常建立及關(guān)閉連接,節(jié)省建立連接的開銷;
2.允許HTTP pipelining的請求模式;
3.減少了后續(xù)請求的響應(yīng)時(shí)間;
輪詢,長輪詢,長連接
輪詢
客戶端定時(shí)向服務(wù)端發(fā)送請求,服務(wù)器接到請求后馬上返回響應(yīng)信息并關(guān)閉連接。
優(yōu)點(diǎn):后端程序編寫比較容易。
缺點(diǎn):請求中有大半是無用,浪費(fèi)帶寬和服務(wù)器資源。
長輪詢
客戶端向服務(wù)器發(fā)送請求,服務(wù)器接到請求后hold住連接,直到有新消息才返回響應(yīng)信息并關(guān)閉連接,客戶端處理完響應(yīng)信息后再向服務(wù)器發(fā)送新的請求。
優(yōu)點(diǎn):在無消息的情況下不會(huì)頻繁的請求,耗費(fèi)資源小。
缺點(diǎn):服務(wù)器hold連接會(huì)消耗資源。
長連接
在頁面里嵌入一個(gè)隱蔵iframe,將這個(gè)隱蔵iframe的src屬性設(shè)為對一個(gè)長連接的請求或是采用xhr請求,服務(wù)器端就能源源不斷地往客戶端輸入數(shù)據(jù)。 (直接使用Websocket也可以達(dá)到相同效果)
優(yōu)點(diǎn):消息即時(shí)到達(dá),不發(fā)無用請求;管理起來也相對方便。
缺點(diǎn):服務(wù)器維護(hù)一個(gè)長連接會(huì)增加開銷。
Chunk
服務(wù)端一般通過Content-Length字段告訴客戶端數(shù)據(jù)長度,但有時(shí)候服務(wù)器需要?jiǎng)討B(tài)生成數(shù)據(jù),這時(shí)候不可能預(yù)先知道內(nèi)容大小,這時(shí)候就可以使用Transfer-Encoding:chunk模式
chunk編碼格式如下:
[chunk size][\r\n][chunk data][\r\n][chunk size][\r\n][chunk data][\r\n][chunk size = 0][\r\n][\r\n]
HTTP1.1的管線化
HTTP管線化可以克服同域并行請求限制帶來的阻塞,它是建立在持久連接之上,是把所有請求一并發(fā)給服務(wù)器,但是服務(wù)器需要按照順序一個(gè)一個(gè)響應(yīng),而不是等到一個(gè)響應(yīng)回來才能發(fā)下一個(gè)請求,這樣就節(jié)省了很多請求到服務(wù)器的時(shí)間。不過,HTTP管線化仍舊有阻塞的問題,若上一響應(yīng)遲遲不回,后面的響應(yīng)都會(huì)被阻塞到。

HTTP緩存
強(qiáng)制緩存
Expires 到期時(shí)間,HTTP1.1使用Cache-Control代替
Cache-Control private/public/max-age/no-cache/no-store
對比緩存
Last-Modified/If-Modified-Since 根據(jù)時(shí)間
Etag/If-None-Match 根據(jù)Etag(生成規(guī)則由服務(wù)器決定),優(yōu)先級(jí)較高