透过测试浏览器对网页中元素请求,提出减少浏览器请求的建议
最近一直在学习linux网络编程这一块的内容,自己做了一个简单web服务器,以前无法确切的了解web浏览器访问网页的的请求过程。现在有着样的条件了,所以就自己实现一下看看过程了。
浏览器展示一个网页的过程:(不涉及本地缓存,假设本地没有缓存)
-
浏览器向服务发送请求,请求一个页面。
-
服务器响应请求,向浏览器发送页面。
-
浏览器加载页面,如果有外部文件,转向4步,没有结束
-
浏览器依次生成进程,分别请求所需文件。
-
服务器响应请求,向浏览器发送外部文件。
-
浏览器加载外部文件。
下面是我测试得到的结果的截图。(此网页中有外部的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.****.net/rentiansheng/article/details/8274489