最近一直在学习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