隨着Web2.0時代的到來,互聯網的網絡架構已經從傳統的C/S架構轉變到更加方便快捷的B/S架構。這樣的轉化簡化了人們上網的方式,也加速了互聯網行業的發展。css
B/S架構的好處:html
1.客戶端使用統一的瀏覽器(Browser)。由於瀏覽器是統一的,因此用戶的使用難度大大的下降了,並且對於開發者來講也能夠下降學習成本。web
2.服務端(Server)基於統一的HTTP協議。HTTP是一種無狀態的鏈接,請求完成後斷開。全世界的互聯網服務都基於統一打招呼的方式,這種方式更加便捷,效率更高。數據庫
當用戶輸入www.taobao.com的時候這個URL的時候,將會發生不少的操做。首先它會請求DNS把這個域名解析成對應的IP地址,而後根據z合格IP地址在互聯網上找到對應的服務器,向這個服務器發一個get請求,由這個服務器決定返回默認的數據資源給訪問的用戶。服務器也能夠是有不少臺,到底指定哪臺服務器來處理請求,這須要一個負載均衡設備來平均分配全部用戶的請求;還有請求的數據是存儲在分佈式緩存裏仍是一個靜態文件中,或是在數據庫裏;當數據返回瀏覽器時,瀏覽器解析數據發現還有一些靜態資源文件(如css、js或者圖片)時又會發起另外的HTTP請求,而這些請求極可能會在CDN上,那麼CDN服務器又會處理這個用戶的請求,用戶發起一個請求大概有這麼多的過程,若是有哪一個節點出現了問題,直接會影響此次請求是否成功。以下圖所示:瀏覽器
下面就這張圖來分析一下一個完整的Web的請求過程:緩存
1.用戶從打開瀏覽器開始,輸入www.taobao.com,首先要將www.taobao.com這個URL請求DNS服務器解析成對應的IP地址,而後再根據這個IP地址去網絡中找到這臺主機服務器。服務器
2.請求服務器,通常大型的網站會有負載均衡設備來提升網站的總體的吞吐能力,這個節點會將用戶的請求平均分發給下面的web應用服務器,如TomCat,Jboos等等,這裏也就是咱們所說的一段業務邏輯,它決定着要返回給客戶什麼樣的數據以及如何渲染,或者又是須要拿什麼樣的數據,從哪裏拿,這個都是業務人員須要編寫的代碼,就不一一贅述了。網絡
3.請求完成返回給客戶端相應的數據,若是發現返回的數據裏面有不少靜態資源文件,則可能又會發起另外的請求去請求CDN或者存放靜態資源的服務器。架構
無論如何,仍是有一些不變的規則須要遵照:負載均衡
1.互聯網上的全部資源都要用一個URL來表示,且必定是惟一的。
2.必須基於HTTP協議與服務器端交互.
3.數據展現必須在瀏覽器中進行
如何發起一個HTTP請求?
當用戶在瀏覽器內輸入www.taobao.com這個URL按下確認以後,這其實就是發起了一個HTTP請求,還有一種是利用一個開源包HttpClient,個人另一篇博客裏面有,進行一個HTTP請求的發送。博客地址爲:
http://www.cnblogs.com/yujiwei/p/7238613.html
HTTP協議的組成?
我認爲HTTP協議最主要的三大模塊是:請求頭、響應頭、HTTP狀態碼,咱們工做中接觸到最多的也就是這三個。
其實上面三張圖,已經很清楚的說明了這三個HTTP協議的組件的一些參數,而且這些也是咱們平時工做常常接觸的。下面我嘗試打開瀏覽器,輸入www.sunyard.com這個URL,示例用的是火狐瀏覽器。
咱們能夠按下F12看到一些請求的信息和返回的信息
上面顯示的請求狀態是200,說明請求成功了。
打開網絡選項點擊請求頭信息:
以及響應頭信息:
基本上經過瀏覽器均可以查詢到這些基本的信息,如今的瀏覽器都會具備F12的開發者工具,相對來講仍是比較方便的。
瀏覽器緩存機制:
你們在開發的過程當中是否有請求發生了異常的狀況,這個時候不論是F12仍是各類檢查前臺和後臺的代碼發現居然沒有問題,那麼這個時候就要考慮瀏覽器是否存在緩存信息致使了這個狀況的發生,瀏覽器緩存是一個比較複雜可是又比較重要的機制。這個時候我通常有兩種解決方案:
第一種:清除掉瀏覽器的緩存,通常瀏覽器都會提供瀏覽器緩存的清空按鈕。
第二種:Ctrl+F5直接請求,這個操做能夠直接避過瀏覽器的緩存直接請求服務器,可是有的服務器部署了Varnish緩存服務,因此有即便避開了瀏覽器的緩存,可是卻仍是有可能訪問到緩存中的數據。
當咱們使用Ctrl+F5組合鍵刷新一個頁面時,在HTTP的請求頭中會增長一些請求頭,告訴服務器端咱們須要的是最新的數據而不是緩存的數據。
效果能夠如圖所示,在請求頭中增長了兩個參數,這就表明着繞過了緩存的服務,直接請求服務器上最新的資源。
1.Cache-Control/Pragma
這個HTTP head字段用於指定全部緩存機制在整個請求/響應鏈中必須服從的指令。這個字段有一些可選值,以下圖所示:
2.Expires
Expires一般的使用格式是Expires:Sat,25 Feb 2017 12:22:17 GMT,超過這個日期,那麼就緩存就失效,直接請求服務器。
3.Last-Modified/Etag
這個字段表示一個服務器上的資源最後的修改時間。
以上就是一些Web的HTTP請求的一些基本的知識,請你們參考。