最近一直在學習linux網絡編程這一塊的內容,本身作了一個簡單web服務器,之前沒法確切的瞭解web瀏覽器訪問網頁的的請求過程。如今有着樣的條件了,因此就本身實現一下看看過程了。 css
瀏覽器展現一個網頁的過程:(不涉及本地緩存,假設本地沒有緩存) linux
瀏覽器向服務發送請求,請求一個頁面。 web
服務器響應請求,向瀏覽器發送頁面。 編程
瀏覽器加載頁面,若是有外部文件,轉向4步,沒有結束 ubuntu
瀏覽器依次生成進程,分別請求所需文件。 瀏覽器
服務器響應請求,向瀏覽器發送外部文件。 緩存
瀏覽器加載外部文件。 服務器
下面是我測試獲得的結果的截圖。(此網頁中有外部的css、js、圖片) 網絡
瀏覽器結果(本代碼和結論只通過本人的簡單測試,可能存在問題。請相信本身的能力,勇於質疑。歡迎提供更好的、更快、更簡潔的代碼或者方法和指出錯誤。在ubuntu12.04使用gcc4.6.3版本編譯,在vc中如出現錯誤,請諒解。) 學習
請求網頁的效果圖:
獲得瀏覽器請求的結果:
看完測試結果後,你們發現瀏覽器先請求了頁面,依次請求了外部文件所須要的文件。因爲我寫的是單線程的服務端,你們可能會看到瀏覽器發送請求的文件的順序,若是你看了網頁的源代碼,你會發現web瀏覽器請求的順序正好是網頁中的書寫順序。我能夠將想要優先顯示的內容書寫到代碼考前的部位。
經過以上信息對於web開發者的建議:
將內容少的js和css直接嵌入網頁中,從而減小瀏覽器的對web服務器的請求次數。減小web服務器的負擔。
減小外部文件,將能夠合併的文件放到一個文件中,從而減小瀏覽器的對web服務器的請求次數。減小web服務器的負擔。(能夠選擇在發佈時合併文件,便於開發。一般是css和js文件)
將優先顯示的外部文件代碼書寫到前面。將不重要的文件放到最好請求。
若是針對本頁面來講,js爲空,css內容也不多,若是直接嵌入網頁頁面中,將會只有兩次web瀏覽器請求的。
代碼和測試主頁、makefile等文件:測試文件按文件地址
blog:http://blog.csdn.net/rentiansheng/article/details/8274489