那么,輸入網(wǎng)址后,實(shí)際發(fā)生了什么呢?過程如下:
1、輸入網(wǎng)址。
2、瀏覽器查找域名的IP地址。
導(dǎo)航的第一步是通過訪問的域名找出其IP地址。DNS查找過程如下:
瀏覽器緩存 – 瀏覽器會(huì)緩存DNS記錄一段時(shí)間。 有趣的是,操作系統(tǒng)沒有告訴瀏覽器儲(chǔ)存DNS記錄的時(shí)間,這樣不同瀏覽器會(huì)儲(chǔ)存?zhèn)€自固定的一個(gè)時(shí)間(2分鐘到30分鐘不等)。
系統(tǒng)緩存 – 如果在瀏覽器緩存里沒有找到需要的記錄,瀏覽器會(huì)做一個(gè)系統(tǒng)調(diào)用(windows里是gethostbyname)。這樣便可獲得系統(tǒng)緩存中的記錄。
路由器緩存 – 接著,前面的查詢請(qǐng)求發(fā)向路由器,它一般會(huì)有自己的DNS緩存。
ISP DNS 緩存 – 接下來要check的就是ISP緩存DNS的服務(wù)器。在這一般都能找到相應(yīng)的緩存記錄。
3. 瀏覽器給web服務(wù)器發(fā)送一個(gè)HTTP請(qǐng)求
4. 網(wǎng)站服務(wù)的永久重定向響應(yīng)
服務(wù)器給瀏覽器響應(yīng)一個(gè)301永久重定向響應(yīng),為什么服務(wù)器一定要重定向而不是直接發(fā)會(huì)用戶想看的網(wǎng)頁內(nèi)容呢?其中一個(gè)原因跟搜索引擎排名有關(guān)。如果一個(gè)頁面有兩個(gè)地址,就像http://www.igoro.com/
和http://igoro.com/,搜索引擎會(huì)認(rèn)為它們是兩個(gè)網(wǎng)站,結(jié)果造成每一個(gè)的搜索鏈接都減少從而降低排名。而搜索引擎知道301永久重定向是什么意思,這樣就會(huì)把訪問帶www的和不帶www的地址歸到同一個(gè)網(wǎng)站排名下。還有一個(gè)是用不同的地址會(huì)造成緩存友好性變差。當(dāng)一個(gè)頁面有好幾個(gè)名字時(shí),它可能會(huì)在緩存里出現(xiàn)好幾次。
5. 瀏覽器跟蹤重定向地址
? 現(xiàn)在,瀏覽器知道了要訪問的正確地址,所以它會(huì)發(fā)送另一個(gè)獲取請(qǐng)求。請(qǐng)求頭部一般包括:
? Accept
? Accept-language
? Accept-Encoding
? Connection
? User-Agent
? Cookie
? Host
6. 服務(wù)器“處理”請(qǐng)求
服務(wù)器接收到獲取請(qǐng)求,然后處理并返回一個(gè)響應(yīng)。
7. 服務(wù)器發(fā)回一個(gè)HTML響應(yīng)
8. 瀏覽器開始顯示HTML
9. 瀏覽器發(fā)送請(qǐng)求,以獲取嵌入在HTML中的對(duì)象
在瀏覽器顯示HTML時(shí),它會(huì)注意到需要獲取其他地址內(nèi)容的標(biāo)簽。這時(shí),瀏覽器會(huì)發(fā)送一個(gè)獲取請(qǐng)求來重新獲得這些文件。這些文件就包括CSS/JS/圖片等資源,這些資源的地址都要經(jīng)歷一個(gè)和HTML讀取類似的過程。所以瀏覽器會(huì)在DNS中查找這些域名,發(fā)送請(qǐng)求,重定向等等…
10. 瀏覽器發(fā)送異步(AJAX)請(qǐng)求