搜尋
首頁後端開發php教程nginx的spdy協議
nginx的spdy協議Aug 08, 2016 am 09:31 AM
apachechromegooglehttp

SPDY 是 Google 開發的基於傳輸控制協定 (TCP) 的應用層協定 ,開發小組正在推動 SPDY 成為正式標準(現為網路草案)。 SPDY 協議旨在透過壓縮、多路復用和優先權來縮短網頁的載入時間和提高安全性。 (SPDY 是Speedy 的暱稱,意思是更快)

SPDY 與HTTP 的關係

SPDY 協議只是在性能上對HTTP 做了很大的優化,其核心思想是盡量減少連接個數,而對於HTTP 的語意並沒有做太大的修改。具體來說是,SPDY 使用了 HTTP 的方法和頁眉,但是刪除了一些頭並重寫了 HTTP 中管理連接和資料轉移格式的部分,所以基本上是相容於 HTTP 的。

Google 在 SPDY 白皮書裡表示要向協議棧下面滲透並替換掉傳輸層協議(TCP),但是因為這樣無論是部署起來還是實現起來暫時相當困難,因此 Google 準備先對應用層協議HTTP 進行改進,先在SSL 之上增加一個會話層來實現SPDY 協議,而HTTP 的GET 和POST 訊息格式保持不變,即現有的所有服務端應用均不用做任何修改。

因此在目前,SPDY 的目的是為了加強 HTTP,是對 HTTP 一個更好的實現和支援。至於未來 SPDY 廣泛應用後會不會演出狸貓換太子,替換掉 HTTP 並且徹底顛覆整個 Internet 就是 Google 的事了。

為什麼要重新建立一個 SPDY ?

距離萬維網之父蒂姆·伯納斯-李發明並推動 HTTP 成為如今互聯網最流行的協議已經過去十幾年了(現用 HTTP 1.1 規範也停滯了 13 年了),隨著現在 WEB 技術的快速發展尤其是HTML5 的不斷演進,包括WebSockets 協定的出現以及當前網路環境的改變、傳輸內容的變化,當初的HTTP 規範已經逐漸無法滿足人們的需要了,HTTP 需要進一步發展,因此HTTPbis 工作團體已經被組成並被授權考慮HTTP 2.0 ,希望能解決目前HTTP 所帶來的諸多限制。而 SPDY 正是 Google 在 HTTP 即將從 1.1 跨越到 2.0 之際推出的試圖成為下一代互聯網通信的協議,長期以來一直被認為是 HTTP 2.0 唯一可行選擇。

HTTP 協定的不足

1. 單路連線請求低效

HTTP 協定的最大弊端就是每個TCP 連線請求低效率

HTTP 協定的最大弊端就是每個TCP 連線請求值,瀏覽器只能透過建立多個連線來解決。此外在 HTTP 中對請求是嚴格的先入先出(FIFO)進行的,如果中間某個請求處理時間較長會阻塞後面的請求。

(注:雖然HTTP pipelining 對連接請求做了改善,但複雜度增加很大,並未普及)

2. HTTP 只允許由客戶端主動發起請求

服務端只能等待客戶端發送一個請求,在可以滿足預先載入的現狀是一種桎梏。

3. HTTP 頭冗餘

HTTP 頭在同一個會話裡是反覆發送的,中間的冗餘信息,比如User-Agent、Host 等不需要重複發送的信息也在反复發送,浪費頻寬和資源。

SPDY 協定的優點

1. 多路復用 請求最佳化

SPDY 規定在一個 SPDY 連接內可以有無限個行請求這樣 SPDY 透過重複使用在單一 TCP 連接上的多次請求,而不是為每個請求單獨開放連接,這樣只需建立一個TCP 連接就可以傳送網頁上所有資源,不僅可以減少消息交互往返的時間還可以避免創建新連接造成的延遲,使得TCP 的效率更高。

此外,SPDY 的多路復用可以設定優先權,而不像傳統HTTP 那樣嚴格按照先入先出一個一個處理請求,它會選擇性的先傳輸CSS 這樣更重要的資源,然後再傳輸網站圖示之類較不重要的資源,可以避免讓非關鍵資源佔用網路通道的問題,提升 TCP 的效能。

2. 支援伺服器推送技術

伺服器可以主動向客戶端發起通訊向客戶端推送數據,這種預先載入可以使用戶一直保持一個快速的網路。

3. SPDY 壓縮了 HTTP 頭

舍棄掉了不必要的頭信息,經過壓縮之後可以節省多餘數據傳輸所帶來的等待時間和頻寬。

4. 強制使用 SSL 傳輸協定

Google 認為 Web 未來的發展方向必定是安全的網路連接,全部請求 SSL 加密後,訊息傳輸更加安全。

🎜🎜SPDY 協定的意義🎜🎜

按照 Google 的說法,SPDY 被創造出來的唯一目的就是讓 Web 更快(strive to make the whole web fast),其名字 SPDY(Speedy) 也似乎在暗示著這一點。那麼 SPDY 的意義又在哪裡呢?

1. 普通用戶:

對於用戶來說,隱藏在瀏覽器下面的 SPDY 相比 HTTP 沒有任何區別,但是我們可以感覺到 Google 服務在 Chrome 下異常的快,這就是 SPDY 的功勞了。此外網站資訊傳輸加密後不用擔心資訊被截取等,大大增加了安全性和保密性。

2. 前端人員:

對於前端工程師來說,提升頁面效率是一件很重要的事情,目前大多採用像CSS Sprites 等方法來優化網站,對於因為頁面加載時每張圖片、icon 都請求一個連接甚至採用在不同頁面引用不同圖片來降低一個頁面內圖片的請求數量。而現在有了 SPDY 的請求優化可以將請求順序進行重排,這樣可以在很大程度上緩解頁面載入時圖片請求帶來的影響。例如像極客公園的報名頁面,如果報名用戶過多,例如極客公園2012年創新大會或極客公園第27 期長城會,可以很明顯的感覺出頭像的請求會拖累整體頁面加載變慢甚至變卡,相信對於這點,經常上淘寶或刷微博的會深有體會,一旦網速稍微慢點就會出現頁面加載異常,還有像蘋果App Store(除去服務器因為地區的延遲),。豆莢這類應用程式分發平台上應用程式圖示刷新緩慢等,如下面這個影片所示。

3. 運維人員:

SPDY 在降低連線數目的同時,也使得伺服器上每個客戶端佔用的資源也減少,從而可以釋放出更多記憶體和 CPU 。此外 SPDY 綜合起來可以將瀏覽速度提升一倍,頁面載入延遲方面的改進達 64% 。

  眾家支援的 SPDY 協定

  如果你在使用 Chrome 瀏覽器,同時使用像 Gmail 等 Google 的網路服務的話,其實你已經透過 HTTP 存取這些服務了。在瀏覽器中打開 chrome://net-internals/#spdy 就會發現你已經在使用 SPDY 協定了。 (除了包括Google 自家的Gmail、Google Plus 等Google 系服務外,其他公共站點例如Twitter 和Webtide 也已經支持該協議。在國內,基於WebKit 的豌豆莢 2.0 也曾表示將引進Chrome的SPDY技術來進一步提升速度。 Mozilla 家的 Firefox 自 Firefox 13 也預設開啟對 SPDY 的支援。而亞馬遜家的 Silk 利用 SPDY 的深度其實不比 Google 自家的 Chrome 和 Firefox 差。

在Web 伺服器方麵包括最流行和最廣泛的 Apache 在內,Netty、Jeety、Varnish、Erlang 和 Hightide 應用伺服器以及面向 node.js 的伺服器也都已經宣布支援 SPDY。 ( Nginx 也表示將支援 SPDY)

如何部署 SPDY?

近日 Google 正式發布了適用於最受歡迎 Web 伺服器 Apache 的插件 mod_spdy,下載安裝後你的 Apache 伺服器就能使用 SPDY 協定與相容 SPDY 協定的瀏覽器如 Chrome、FireFox 等通訊。像之前所說的那樣,SPDY 是運行在 HTTPS 上,非 HTTPS 流量並不會受到 mod_spdy 影響。

SPDY 部署需求:

1. Apache 2.2 (≥2.2.4)

2. mod_ssl 模組開啟

2. mod_ssl 模組開啟

1 mod_spdy 模組

下載頁下載對應系統的安裝包2. 安裝mod_spdy 模組

2. 安裝mod_spdy 模組 deb

apt-get -f install

-系統為Debian/Ubuntu

------------------------- -----------------------------------

yum install at (if you do not already have ' at' installed)

rpm -U mod-spdy-*.rpm

-系統為CentOS/Fedora

3. 重啟3. /apache2 restart(Debian/Ubuntu)

4. 確定開啟與否

開啟Chrome 瀏覽器,輸入並前往chrome://net-internals/#spdy 頁面,查看主機名稱是否出現在欄位中。如果出現說明已經部署完畢,如果沒有出現去伺服器錯誤日誌(error.log)裡查詢。

以上就介紹了nginx的spdy協議,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Springboot怎么使用内置tomcat禁止不安全HTTPSpringboot怎么使用内置tomcat禁止不安全HTTPMay 12, 2023 am 11:49 AM

Springboot内置tomcat禁止不安全HTTP方法1、在tomcat的web.xml中可以配置如下内容让tomcat禁止不安全的HTTP方法/*PUTDELETEHEADOPTIONSTRACEBASIC2、Springboot使用内置tomcat没有web.xml配置文件,可以通过以下配置进行,简单来说就是要注入到Spring容器中@ConfigurationpublicclassTomcatConfig{@BeanpublicEmbeddedServletContainerFacto

JAVA发送HTTP请求的方式有哪些JAVA发送HTTP请求的方式有哪些Apr 15, 2023 am 09:04 AM

1.HttpURLConnection使用JDK原生提供的net,无需其他jar包,代码如下:importcom.alibaba.fastjson.JSON;importjava.io.BufferedReader;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStream;importjava.net.HttpURLConnection;

nginx中如何升级到支持HTTP2.0nginx中如何升级到支持HTTP2.0May 24, 2023 pm 10:58 PM

一、前言#ssl写在443端口后面。这样http和https的链接都可以用listen443sslhttp2default_server;server_namechat.chengxinsong.cn;#hsts的合理使用,max-age表明hsts在浏览器中的缓存时间,includesubdomainscam参数指定应该在所有子域上启用hsts,preload参数表示预加载,通过strict-transport-security:max-age=0将缓存设置为0可以撤销hstsadd_head

Nginx的HTTP2协议优化与安全设置Nginx的HTTP2协议优化与安全设置Jun 10, 2023 am 10:24 AM

随着互联网的不断发展和改善,Web服务器在速度和性能上的需求也越来越高。为了满足这样的需求,Nginx已经成功地掌握了HTTP2协议并将其融入其服务器的性能中。HTTP2协议要比早期的HTTP协议更加高效,但同时也存在着特定的安全问题。本文将为您详细介绍如何进行Nginx的HTTP2协议优化和安全设置。一、Nginx的HTTP2协议优化1.启用HTTP2在N

Nginx中HTTP的keepalive怎么配置Nginx中HTTP的keepalive怎么配置May 12, 2023 am 11:28 AM

httpkeepalive在http早期,每个http请求都要求打开一个tpcsocket连接,并且使用一次之后就断开这个tcp连接。使用keep-alive可以改善这种状态,即在一次tcp连接中可以持续发送多份数据而不会断开连接。通过使用keep-alive机制,可以减少tcp连接建立次数,也意味着可以减少time_wait状态连接,以此提高性能和提高httpd服务器的吞吐率(更少的tcp连接意味着更少的系统内核调用,socket的accept()和close()调用)。但是,keep-ali

Python的HTTP客户端模块urllib与urllib3怎么使用Python的HTTP客户端模块urllib与urllib3怎么使用May 20, 2023 pm 07:58 PM

一、urllib概述:urllib是Python中请求url连接的官方标准库,就是你安装了python,这个库就已经可以直接使用了,基本上涵盖了基础的网络请求功能。在Python2中主要为urllib和urllib2,在Python3中整合成了urllib。Python3.x中将urllib2合并到了urllib,之后此包分成了以下四个模块:urllib.request:它是最基本的http请求模块,用来模拟发送请求urllib.error:异常处理模块,如果出现错误可以捕获这些异常urllib

怎么利用Java实现调用http请求怎么利用Java实现调用http请求Jun 02, 2023 pm 04:57 PM

一、概述在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适。很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对方提供的接口或第三方接口(短信、天气等)。在Java项目中调用第三方接口的方式有:1、通过JDK网络类Java.net.HttpURLConnection;2、通过common封装好的HttpClient;3、通过Apache封装好的CloseableHttpClient;4、通过SpringBoot-RestTemplate;二、Java调用第三方

Nginx http运行状况健康检查如何配置Nginx http运行状况健康检查如何配置May 14, 2023 pm 06:10 PM

被动检查对于被动健康检查,nginx和nginxplus会在事件发生时对其进行监控,并尝试恢复失败的连接。如果仍然无法恢复正常,nginx开源版和nginxplus会将服务器标记为不可用,并暂时停止向其发送请求,直到它再次标记为活动状态。上游服务器标记为不可用的条件是为每个上游服务器定义的,其中包含块中server指令的参数upstream:fail_timeout-设置服务器标记为不可用时必须进行多次失败尝试的时间,以及服务器标记为不可用的时间(默认为10秒)。max_fails-设置在fai

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。