摘要:通過或者協議請求的資源由統一資源標識符,來標識。標準于年月以正式發表,替換成為的實現標準。該系列協議由谷歌開發,于年公開。主流的瀏覽器谷歌火狐也都早已經支持,它已經成為了工業標準。配合負載均衡有層和層協議負載。
HTTP/2 is the future of the Web, and it is here!
使用 HTTP/1.1 和 HTTP/2 在相同環境各加載 300 多張小圖片,性能相差一倍。
你可以點擊這里的 DEMO 體驗一下,HTTP/2 的加載快感。
歷史超文本傳輸協議(英文:HyperText Transfer Protocol,縮寫:HTTP)是互聯網上應用最為廣泛的一種網絡協議。設計 HTTP 最初的目的是為了提供一種發布和接收 HTML 頁面的方法。通過 HTTP 或者 HTTPS 協議請求的資源由統一資源標識符(Uniform Resource Identifiers,URI)來標識。
HTTP 的發展是由蒂姆·伯納斯-李于 1989 年在歐洲核子研究組織(CERN)所發起。由萬維網協會(World Wide Web Consortium,W3C)和互聯網工程任務組(Internet Engineering Task Force,IETF)制定標準,最終發布了一系列的 RFC,其中最著名的是 1999 年 6 月公布的 RFC 2616,定義了 HTTP 協議中現今廣泛使用的一個版本——HTTP 1.1。
2014 年 12 月,互聯網工程任務組(IETF)的 Hypertext Transfer Protocol Bis(httpbis)工作小組將 HTTP/2 標準提議遞交至 IESG 進行討論 [1],于 2015 年 2 月 17 日被批準。[2] HTTP/2 標準于 2015 年 5 月以 RFC 7540 正式發表,替換 HTTP 1.1 成為 HTTP 的實現標準。
以上摘要自 維基百科。
SPDYSPDY(發音如英語:speedy)。實際上在 HTTP2 提出來之前,SPDY 流行了很長一段時間。該系列協議由谷歌開發,于 2009 年公開。它的設計目標是降低 50% 的頁面加載時間。當下很多著名的互聯網公司都在自己的網站或 APP 中采用了 SPDY 系列協議(當前最新版本是 SPDY/3.1),因為它對性能的提升是顯而易見的。主流的瀏覽器(谷歌、火狐、Opera)也都早已經支持 SPDY,它已經成為了工業標準。HTTP Working-Group 最終決定以 SPDY/2 為基礎,開發 HTTP/2。
突然在 Chrome 51 版本之后不支持 SPDY 了,Chrome 棄用了 SPDY,開始全面支持 HTTP2。
HTTP/2 的優勢相比 HTTP/1.x,HTTP/2 在底層傳輸做了很大的改動和優化:
每個服務器只用一個連接。HTTP/2 對每個服務器只使用一個連接,而不是每個文件一個連接。這樣,就省掉了多次建立連接的時間,這個時間對 TLS 尤其明顯,因為 TLS 連接費時間。
加速 TLS 交付。HTTP/2 只需一次耗時的 TLS 握手,并且通過一個連接上的多路利用實現最佳性能。HTTP/2 還會壓縮首部數據,省掉 HTTP/1.x 時代所需的一些優化工作,比如拼接文件,從而提高緩存利用率。
簡化 Web 應用。使用 HTTP/2 可以讓 Web 開發者省很多事,因為不用再做那些針對 HTTP/1.x 的優化工作了。
適合內容混雜的頁面。HTTP/2 特別適合混合了 HTML、CSS、JavaScript、圖片和有限多媒體的傳統頁面。瀏覽器可以優先安排那些重要的文件請求,讓頁面的關鍵部分先出現,快出現。
更安全。通過減少 TLS 的性能損失,可以讓更多應用使用 TLS,從而讓用戶信息更安全。
Can I use?在以下瀏覽器的版本都開始支持 HTTP2。
這就尷尬了!Android 4.4.4 也就是 Kitkat 版本以下都不支持 HTTP2,谷歌 2016 年 6 月份的數據顯示 該版本的用戶占 31.6%。
不過好消息是,支持 HTTP/2 的 Web Server 基本都支持 HTTP/1.1。這樣,即使瀏覽器不支持 HTTP/2,雙方也可以協商出可用的 HTTP 版本,沒有兼容性問題。
誰在用 HTTP2推薦一個瀏覽器插件HTTP/2 and SPDY indicator,藍色的小圖標亮起,就表示該網站使用了 HTTP/2 協議。
大公司已經走在了時代的前沿,我們這些追隨者有什么理由不跟上呢。
https://www.google.com
https://www.aliyun.com
https://www.youtube.com
https://www.facebook.com
https://twitter.com
。。。還有很多
不過百度這次又沒有跟上,不信你們自己去看。
服務器支持這里是 一覽,主流的開發語言和應用服務器都已經支持了 HTTP/2。
最佳實踐 安裝我們從 NGINX 開始,nginx 從 1.9.5 開始支持 HTTP/2。
openssl。建議全局安裝。
SSL/TLS。http2 嚴格要求使用 https,所以你得準備一個證書。當然也可以在 let"s encrypt 申請一個。
nginx 至少需要啟用 http_v2_module 和 http_ssl_module 這兩個模塊。先下載源碼,在安裝目錄執行
./configure --with-http_v2_module --with-http_ssl_module make&&make install配置
重定向所有的請求到 SSL/TLS
server { listen 80; location / { return 301 https://$host$request_uri; } }
開啟 HTTP/2
server { listen 443 ssl http2 default_server; ssl_certificate server.crt; ssl_certificate_key server.key; ... }
最后一步,重啟 nginx
nginx -s reload
為了驗證 HTTP/2 是否開啟,你可以安裝瀏覽器插件 HTTP/2 and SPDY indicator 進行查看。
負載均衡方案 向下兼容需要指出的是 HTTP/2 的服務器都是向下兼容的 HTTP/1.1 的,升級了之后,你不需要擔心,之前的老版本用戶怎么辦。訪問方式如下圖,
非完整鏈路的 HTTP/2 和 TLS客戶端使用期望的協議連接代理服務器,比如 TLS 或 HTTP/2,然后代理服務器再去連接應用服務器、數據庫服務器等,但不需要使用相同的協議。
配合負載均衡LVS 有 4 層和 7 層協議負載。所謂四層就是基于 IP+端口的負載均衡;七層就是基于 URL 等應用層信息的負載均衡。研究過阿里云的 SLB,暫時還不支持 HTTP/2 的支持,也沒有看到 AWS、IBM 有對應的服務支持。所以我們能用的解決方案就是:
LVS 4 層 + HTTP/2 web Server
LVS 只做請求分發,由應用服務器來處理加密解密和 HTTP/2 的支持。這樣的方式,對性能影響有多少呢,需要實際的測試,不過目前來說,沒有其他方案。
不是銀彈 對于 web 前端HTTP1.1 時代,我們針對這個協議的特性做了很多 WEB 前端優化,比如說 域名分片、文件合并壓縮、雪碧圖、行內代碼等。但是到了 HTTP/2 時代,這些操作都是多余的了,對于同一個域名,只會建立起一個 TCP 連接。太多的域名還會增加新建連接的初始化和 TLS 握手的時間。
在采用 HTTP/2 之前,需要找出應用了這些優化的代碼,分析一下它們會不會影響你的應用設計和工作流程。這樣在遷移到 HTTP/2 之后,就可以著手改造它們,甚至撤銷某些優化
HTTPS 的壓力HTTPS 正式啟用之前還有很多問題要解決。
單連接開銷比較大。HPACK 數據壓縮算法會更新兩端的查找表。這樣可以讓連接有狀態,而破壞狀態就意味著要重建查找表,另外單連接占用內存較多
全站點 HTTPS 的改造??赡苌婕暗?web,CDN,native 客戶端。
其他問題需要拋棄針對 HTTP/1.x 的優化。
對下載大文件不利。
你的客戶也許不在乎。你的客戶很可能不在乎他分享的自家貓咪的視頻是否受到 TLS 和 HTTP/2 的保護。
參考文獻https://imququ.com/post/protocol-negotiation-in-http2.html
使用 HTTP/2 提升性能的 7 個建議
NGINX 安裝 http/2
維基百科HTTP/2
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/11757.html
摘要:版本發布月日,官博發文宣告正式發布。官方文檔提供了如下的示例終端上的輸出熱門文章我在阿里云做前端抓住我們核心的競爭力,并同時發現業務中的問題,跨端推進解決,這是最好的出路。 showImg(https://segmentfault.com/img/remote/1460000019038442); 【阿里云 TXD 前端月刊】- 熱門前端技術快報,聚焦業界新視界;前端領域急速發展的節奏...
摘要:版本發布月日,官博發文宣告正式發布。官方文檔提供了如下的示例終端上的輸出熱門文章我在阿里云做前端抓住我們核心的競爭力,并同時發現業務中的問題,跨端推進解決,這是最好的出路。 showImg(https://segmentfault.com/img/remote/1460000019038442); 【阿里云 TXD 前端月刊】- 熱門前端技術快報,聚焦業界新視界;前端領域急速發展的節奏...
摘要:目前預覽版現在已經可以在上使用,很快就可以在上使用。版本發布月日,官博發文宣告正式發布。距離年月發布版已有一年多了。官方表示,這是系列的最后一個版本,他們將全力準備。發布時隔一年,如約而至,正式發布第一個版本。showImg(https://user-gold-cdn.xitu.io/2019/4/30/16a6c4a6f112f3d6); 【阿里云 TXD 前端月刊】- 熱門前端技術快報,...
摘要:版本發布月日,官博發文宣告正式發布。官方文檔提供了如下的示例終端上的輸出熱門文章我在阿里云做前端抓住我們核心的競爭力,并同時發現業務中的問題,跨端推進解決,這是最好的出路。 showImg(https://segmentfault.com/img/remote/1460000019038442); 【阿里云 TXD 前端月刊】- 熱門前端技術快報,聚焦業界新視界;前端領域急速發展的節奏...
閱讀 770·2021-09-28 09:35
閱讀 2599·2019-08-29 11:25
閱讀 2163·2019-08-23 18:36
閱讀 1861·2019-08-23 16:31
閱讀 2076·2019-08-23 14:50
閱讀 3129·2019-08-23 13:55
閱讀 3297·2019-08-23 12:49
閱讀 2089·2019-08-23 11:46