摘要:請求優(yōu)先級把消息分解為很多獨立的幀之后,就可以通過優(yōu)化這些幀的交錯和傳輸順序,進一步提升性能,為了做到這一點,每個流都可以攜帶有的優(yōu)先值。服務(wù)器可以根據(jù)流的優(yōu)先級,控制資源的分配,而在響應(yīng)數(shù)據(jù)準(zhǔn)備好之后,優(yōu)先將最高優(yōu)先級的幀發(fā)送給瀏覽器。
HTTP2.0
HTTP2.0的目的就是通過支持請求與響應(yīng)的多路復(fù)用來減少延遲、通過壓縮HTTP首部字段將協(xié)議開銷降至最低,同時增加對請求優(yōu)先級和服務(wù)器端推送的支持,HTTP2.0不會改動HTTP的語義、HTTP方法、狀態(tài)碼、URI和首部字段等這些核心概念,但是HTTP2.0修改了數(shù)據(jù)傳輸?shù)姆绞胶蛿?shù)據(jù)格式化的方式。
二進制分幀層在傳輸層和應(yīng)用層之間新增了二進制分幀層,它位于應(yīng)用層之內(nèi),處于應(yīng)用層可見的高層HTTP API之下的一個新機制,HTTP的語義不受影響,只是在傳輸期間對數(shù)據(jù)的編碼方式做出修改,HTTP1.x以換行符作為純文本的分隔符,而HTTP2.0將所有傳輸?shù)男畔⒎指顬楦〉南⒑蛶λ鼈儾捎枚M制格式的編碼。
HTTP2.0中的新概念:
流,已建立連接上的雙向字節(jié)流;
消息,與邏輯消息對應(yīng)的完整的一系列數(shù)據(jù)幀,比如請求、響應(yīng)等;
幀,HTTP2.0通信的最小單位,每個幀的首部含有流標(biāo)識符。
所有的HTTP2.0的通信都是在一個TCP連接上完成,這個TCP連接可以承載任意數(shù)量的雙向數(shù)據(jù)流,相應(yīng)的,每個數(shù)據(jù)流以消息的形式發(fā)送,而消息由一個或多個幀組成,這些幀可以亂序發(fā)送,然后再根據(jù)每個幀首部的流標(biāo)識符重新組裝。由于所有的幀都采用二進制編碼,所以首部字段都會被壓縮。
在HTTP1.x中,如果客戶端想發(fā)送多個并行的請求以改進性能,就必須使用多個TCP連接,HTTP2.0實現(xiàn)了多路復(fù)用,客戶端和服務(wù)器可以把HTTP消息分解為互不依賴的幀,然后亂序發(fā)送,最后在另一端把它們重新組裝起來。這樣就可以只使用一個TCP連接即可并行發(fā)送多個請求和響應(yīng)。
請求優(yōu)先級把HTTP消息分解為很多獨立的幀之后,就可以通過優(yōu)化這些幀的交錯和傳輸順序,進一步提升性能,為了做到這一點,每個流都可以攜帶有31bites的優(yōu)先值。服務(wù)器可以根據(jù)流的優(yōu)先級,控制資源的分配,而在響應(yīng)數(shù)據(jù)準(zhǔn)備好之后,優(yōu)先將最高優(yōu)先級的幀發(fā)送給瀏覽器。
服務(wù)器推送在HTTP2.0,服務(wù)器可以額外的向瀏覽器推送資源,當(dāng)瀏覽器請求資源A時,而服務(wù)器知道它很可能也需要資源B,服務(wù)器可以在瀏覽器發(fā)送請求前,主動將資源推送給客戶端。這個功能可以幫助客戶端將資源B放進緩存。
首部壓縮HTTP1.x的每一次通信都會攜帶一組首部,用于描述傳輸?shù)馁Y源及其屬性,這通常會增加500-800字節(jié)的開銷,為了減少這些開銷提升性能:
HTTP2.0會使用首部表來跟蹤和存儲之前發(fā)送的鍵值對,對于相同的數(shù)據(jù),不再通過每次請求和響應(yīng)發(fā)送;
首部表在HTTP2.0連接持續(xù)期內(nèi)始終存在,由服務(wù)器和瀏覽器漸進的更新;
每個新的首部字段要么被追加到當(dāng)前首部表的末尾,要么替換首部表之前的值;
在上面的例子中,第二次發(fā)送請求只需要發(fā)送變化了的字段,從而顯著的減少了每個請求的開銷。
web安全常見的前端安全問題包括以下幾點:
XSS攻擊
iframe帶來的風(fēng)險
CSRF攻擊
網(wǎng)絡(luò)劫持攻擊
XSS攻擊XSS是跨站腳本攻擊的簡稱,這類安全問題的本質(zhì)原因在于:瀏覽器錯誤的將攻擊者提供的用戶輸入數(shù)據(jù)當(dāng)做JavaScript腳本給執(zhí)行了。
1:用戶輸入框輸入的數(shù)據(jù)不經(jīng)過處理直接展示在頁面上,該攻擊手段最簡單的防御方法就是將前端輸入的數(shù)據(jù)都進行轉(zhuǎn)義,比如將"<"、">"轉(zhuǎn)義為"<",">"實體字符,這樣輸入數(shù)據(jù)里面的就不會被瀏覽器當(dāng)做腳本執(zhí)行了。但是在Jquery中,append()在添加元素的時候,會使用eval將參數(shù)里面的