当前位置:首页当你打开一个网页的时候,浏览器在干什么? 举报文章

当你打开一个网页的时候,浏览器在干什么?

作者:admin    来源:用户投稿    时间:2016.4.13   

  这是一个很经典的问题,我到现在还记得,许多年前找工作的时候,面试官曾经这样问起我。

  那是一个闷热下午,我辗转十几站地铁才来到面试的地方。面试官一开始问了几个简单的问题,都记不起来了。人的记忆就是这么功利,只有那些让你特别爽或特别不爽的事情,才会被记下来。

  “当你入了一个网址,敲下回车,直到你看到网页为止,浏览器都干了什么?”后来面试官似乎很有自信的问。

  我擦,这算什么问题,《程序员面试宝典》上没讲啊,只能碰运气了。我试探性的说,“一开始嘛,浏览器肯定要检查你的网址对不对,合不合法啊,比如你把www.cctv.com敲成了www.ccav.com,它肯定觉得你是傻逼,不理你吧。”

  “嗯,然后呢?”

  “然后啊,然后它就连接到了网站的服务器,把网页下载下来,就ok了”。

  “没了?”

  “没了。”

  “好,下一位。”

  “哎等等,我想起来了,浏览器是不是要把网页给转换一下啊,毕竟我们下载下来网页文件是这样的:

1

  而看到的却是这样的:

  

网站加载 HTML语音 网页架构 网站建设

  “是要转换一下。何转换呢,这才是重点。”面试官有点不大耐烦。 “这个。。。”

  我支支吾吾了半天,也没说出个所以然。后来面试结果如何,我也记不清了,可能是被鄙视了,也可能是勉强过了,这不重要。重要的是,我们今天一定要搞清楚这个问题。

  想象一下,如果你来做一个浏览器,你准备如何处理下载下来的网页和其他资源呢?

  我们知道,网页是由HTML语言写的,一般会有CSS来描述网页的样子,有的还有javascript来实现一些复杂的功能。这三者各司其职,其中HTML负责构建网页的框架,它规定了哪里是标题区域,哪里是内容区域,哪里是导航区域。

  

2

  CSS负责美化网页的外表,它主要关心这个标题该用多大的字体,用什么颜色之类的问题。

  

3

  javascript是一门正儿八经的编程语言,用它来做一些高级的功能,比如对用户的操作做出相应,再比如后台上传一个文件。

  

4

  对应的,浏览器也要具备转换和解析这三个家伙的能力。

  对于HTML和CSS,不同的浏览器有不同的解析引擎,比如IE用的是自家的Trident内核,Safari和早期的Chrome用的是苹果开源的webkit内核(后来chrome换成了谷歌的blink内核)。不管用什么内核,其功能都是一样的,就是把下载下来的网页代码绘制出来。

  对于javascript,webkit有默认的javascript解析引擎,但是chrome替换成了V8。我们之前讲过,像这种脚本语言,需要有个东西把它翻译成计算机能理解的机器语言。对应到浏览器里,则是把javascript翻译成浏览器能理解的代码。

  凑齐了家伙之后,就可以开工了。主要有三个阶段:

  1、生成DOM树。

  你仔细看上面的HTML代码,他们是有层级之分的,最外层的是里面是内容,再里面是段落

  ,就好像我们盖楼,先搭最外面的架子,然后是楼梯和一层又一层,每一层有很多户,每一户又有厨房、客厅、卧室。DOM树也是如此。树是数据结构的一种,我们改天详细讲,你只需要知道它是用来辅助处理HTML的层级结构的,就行了。

  

5

  2、生成渲染树。有了DOM树,我们知道了网页里节点和节点之间的层级关系。再加上CSS对这些节点的样式描述,我们就可以生成另外一棵树,渲染树。顾名思义,渲染树就是用来渲染和显示的。离我们的目标又近了一步,不是吗?

  3、测量、排版、绘制。还记得《什么是渲染?》吗?这篇文章讲的是操作系统渲染的过程,跟浏览器是一模一样的。可见技术是相通的。你今天在做前端,明天派你去做Android,你会发现除了编程语言不一样,知识还是那些知识,方法还是那些方法。

  看起来很简单是不?其实不然。一般浏览器代码量非常庞大,因为它需要处理的事情实在是太多了。连接服务器下载网页需要非常可靠的网络模块;解析HTML、CSS、javascript要用程序员最头疼的编译原理;有的网页非常复杂,特效、装饰、挂件满天飞(没错,你知道我在说什么网站),浏览器要非常小心的处理渲染的性能问题。

  那么问题来了,既然浏览器如此庞大、如此复杂、如此吃性能,如何才能保证手机上的浏览器流畅运行呢?

  改天再告诉你。这个公众号,我可是要准备写一年的呢。

  PS:面试那段是虚构的,像本人这种自诩为「有点儿小牛逼」的程序员,怎么可能会被这种问题难倒呢,哇哈哈。

  文章作者:凡夫畏果 公众号:给产品经理讲技术(ID:pm_teacher)

  欢迎添加微信公众号:给产品经理讲技术

关注创业、电商、站长,扫描非凡网赚网 08398.com 站长网微信二维码,定期抽大奖。

好文打赏,给Ta鼓励
扫一扫用手机阅读本文
  • 相关搜索
图片推荐
    江湖微装修系统_装修O2O系统行业的新霸主!

    江湖微装修系统_装修O2O系统行业的新霸主!

    颠覆时代有多可怕,你知道吗?  马云说:我刚搞出淘宝网的时候,我告诉一位做皮具的老板,把你的生意放到网上来做吧。他说:我先看看。几年前我再次告诉他同样的话。他说:有时间再说吧。两年前他找我说:我的生意
    56网创始人周娟:优势互补是并购的最佳动力

    56网创始人周娟:优势互补是并购的最佳动力

    图为56网创始人周娟  被收购两年来,56如何一边深度整合,一边保持独立发展?  文 | 翟文婷  前不久,百度旗下的爱奇艺把视频客户端PPS收入囊中。这是继去年优酷土豆合并之后,视频网站的又一并购案
    70路小报:四个信号说明你的创业公司需要转型了

    70路小报:四个信号说明你的创业公司需要转型了

    [导读]创业者需要一个重要的能力即愿意改变商业模式或者产品形态。大部分成功的创业公司都经历过一个转型的过程,虽然这些都是听上去简单,但要掌握转型的信号,需要注意四点。    腾讯科技 Lois 1月1
    百度排名优化7天上首页是怎么做到的?

    百度排名优化7天上首页是怎么做到的?

    百度排名优化7天上首页1-3名,淘宝交易,排名上来才发货,上来后按天或按月付费,看了后是不是很诱惑人?这纠结是不是真的呢,当然是真的,淘宝交易还有啥担心的,再说了是排名上来了才收费的,所以你不需要担心
    数据营销,未来营销的发展趋势

    数据营销,未来营销的发展趋势

    互联网PC端时代的疲软,导致移动互联网、智能设备软硬件功能的不断完善,从而用户的使用习惯也发生不断的变化,其行为模式从传统的PC端逐渐演变成PC+移动端的并行模式,跨屏时代正式到来。因此数据营销的作用
    你的营销型网站建设输在起跑线上了吗?

    你的营销型网站建设输在起跑线上了吗?

    我们所开展的一切关于营销型网站建设的工作都是以营销为目的,最终面向的对象就是用户。我们都知道,绝大部分的用户都是通过搜索引擎来获取他们想要的信息,这一种习惯似乎已经变成了一种定律。在我国的教育史上很流
    高一度网络:SEO优化行业的就业前景好不好

    高一度网络:SEO优化行业的就业前景好不好

    贵州罗蒙了解现在已然是互联网信息飞速发展的信息化大时代,越来越多的人看到了这个行业未来的发展前景,所以很多的年轻人选择去学习计算机应用领域的相关专业,为了日后谋求一个有发展前途的工作,成为核心技术人才
    百度取消显示快照时间,瓜分了谁的蛋糕?

    百度取消显示快照时间,瓜分了谁的蛋糕?

    百度的一举一动,都会触动站长敏感的神经,在3月5日晚百度悄然取消掉了快照日期的显示。 今日不少站长反应:快照时间不显示,链接都不好交换了,不过换句话来说,百度其实早在之前就给这样一个解释:快照时间不会
你是怎么知道非凡网赚网的?
  •   
  • 联系QQ 邮箱:976382653@qq.com 微信:976382653
    在线留言
    发布软文
    广告自助购
    文章调用
    常见问题
    保存到桌面