面試——HTTP協(xié)議

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交互過程

image.png

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ì)被阻塞到。


image.png

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í)較高

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,544評(píng)論 19 139
  • 面試題目一:在java中一個(gè)字符能否表示一個(gè)漢字?(考察char代表多少個(gè)字節(jié)) 答案:在java中一個(gè)字符表示1...
    pr0metheus閱讀 1,630評(píng)論 1 1
  • 一、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,738評(píng)論 6 152
  • 山澗水旁的自由之花——三三和翠翠 把三三和翠翠相提并論,是因?yàn)樗齻儍蓚€(gè)人給我很多相似的感覺,雖然性格和身世命運(yùn)都不...
    14廣告柳港閱讀 511評(píng)論 0 2
  • 前言:《一只中二喵和他的直男癌主人》以一只喵的視角看小joy的生活,借以表達(dá)小joy積極向上的生活態(tài)度。 ps.這...
    周小joy閱讀 335評(píng)論 0 1

友情鏈接更多精彩內(nèi)容