精华内容
下载资源
问答
  • Google浏览器Chrome正式发布

    千次阅读 2008-09-03 18:45:00
    导读: 如昨天的预告一样,Google今天正式发布了开源浏览器Google Chrome,现在已经可以进行下载了,目前的版本还只支持Windows,不过Mac和Linux版本的Google Chrome之后也会推出。 点击下载Google Chrome浏览器:...
    导读:
    

      如昨天的预告一样,Google今天正式发布了开源浏览器Google Chrome,现在已经可以进行下载了,目前的版本还只支持Windows,不过Mac和Linux版本的Google Chrome之后也会推出。

      点击下载Google Chrome浏览器: http://www.google.com/chrome

      Google Chrome是由Google开发的一款设计简单、高效的Web浏览工具。

      Google Chrome的特点是简洁、快速。Google Chrome支持多标签浏览,每个标签页面都在独立的“沙箱”内运行,在提高安全性的同时,一个标签页面的崩溃也不会导致其他标签页面被关闭。此外,Google Chrome基于更强大的JavaScript V8引擎,这是当前Web浏览器所无法实现的。

      Google Chrome借鉴了苹果的WebKit(Safari使用的引擎)、Mozilla的Firefox及其他相关应用。Google官方声称将开放Google Chrome的全部源代码。

      

      原创文章如转载,请注明:转载自月光博客[ http://www.williamlong.info/]

      本文链接地址:http://www.williamlong.info/archives/1484.html

      

      文章排行:

      相关文章:

      ◇1.andy

      http://www.xuexi.la

      已经下载,在用了...

      2008-9-3 8:28:28

      ◇2.阿债

      你也太快了一点,不过我更快,已经下载安装了,现在就是在Chrome下回复

      2008-9-3 8:36:29

      ◇3.Scofield

      http://blog.sina.com.cn/arenas

      用过的朋友告诉一下好用不

      2008-9-3 8:37:09

      ◇4.xjb

      http://www.watch-life.net

      嘿嘿,下载ing

      2008-9-3 8:38:56

      ◇5.李海鑫

      http://www.lihaixin.com

      下载中........

      2008-9-3 8:40:42

      ◇6.Johnny

      http://www.imyue.net

      在线安装很BT,现在用着还没有什么感觉,等大量实用的插件,要是能兼容FF的插件就好了

      2008-9-3 8:47:19

      ◇7.kaka

      很快的

      和firefox3刚刚安装时一样快,不过我的firefox3现在因为安装了很多插件,又慢了

      2008-9-3 8:51:43

      ◇8.sekihin

      界面很清爽,不过感觉有点像傲游,不知道和傲游有没有什么血缘关系?

      2008-9-3 8:56:00

      ◇9.chinetman

      http://zhushini.cn

      这么早,哈哈

      2008-9-3 9:00:38

      ◇10.92cha

      http://www.92cha.com

      我也下了试用,还不错,可惜就是没有傲游2的双击关闭标签栏、拖拽等实用功能...

      2008-9-3 9:03:55

      ◇11.小白

      和Safari很像,

      写评论的文本框可以通过拖拽右下角来缩放大小,

      还有秘密浏览功能。

      2008-9-3 9:06:15

      ◇12.任

      又裝在c盤了Orz!

      2008-9-3 9:06:48

      ◇13.jianqun

      网页设计人员又要考虑多一个兼容性了。

      2008-9-3 9:08:38

      ◇14.324745906

      ◇ 13.jianqun

      网页设计人员又要考虑多一个兼容性了。

      所言及时,mop在谷歌浏览器可是用不成了.再也打不开右边的页面,不知道是测试版的缘故?不知道什么时候可以用 Google Chrome上猫扑大杂烩.

      2008-9-3 9:13:51

      ◇15.狗尾草

      在用了,月光更新的稍慢

      2008-9-3 9:18:31

      ◇16.Mojo

      http://mojo.kilu.de

      支持Chrome~~~但刚开始用觉得很奇怪……

      2008-9-3 9:20:57

      ◇17.大帝007

      http://www.dadi007.cn

      恩,用着不错,速度感觉也挺快的,不过那小图标看着挺像腾讯的~~

      2008-9-3 9:24:35

      ◇18.菠菜

      http://www.bbon.cn

      不过不支持的东西还不少,连谷歌金山词霸都不行,可操作性方面感觉非常不错。

      2008-9-3 9:34:43

      ◇19.Shaman

      不支持WIN2008,可以安不可以浏览页面,囧了!

      2008-9-3 9:37:22

      ◇20.中秋节表情

      http://www.qqmember.com/biaoqing/200808/31-125.html

      先下载试试看

      2008-9-3 9:38:41

      ◇21.linker

      http://www.linwan.net.cn

      经常上论坛的,google chrome用着是极别扭的,能看不能发贴。

      2008-9-3 9:42:26

      ◇22.任

      "C:/Documents and Settings/ren/Local Settings/Application Data/Google/Chrome/Application/chrome.exe"安裝位置怎麼那麼怪!看到圖標我就想起口袋怪獸!

      2008-9-3 9:47:00

      ◇23.siubun

      http://mansiubun.blogspot.com/

      正在用Chrome回复这篇文章,刚刚写了一篇个人使用感受,当然是极不专业的,希望月光博客能开一篇文章收集各用户的问题和建议,反馈给Google,让我们能在正式版得到更好的体验!

      2008-9-3 10:03:05

      ◇24.男性病治疗

      http://www.nanren91.com

      哦 好啊 下载来用用

      2008-9-3 10:10:12

      ◇25.Citione

      居然不支援win2K,囧

      2008-9-3 10:11:06

      ◇26.XP

      挺不错!支持一个先!XP是王道!

      2008-9-3 10:18:03

      ◇27.F

      你的文章越来越没有个性。

      2008-9-3 10:21:54

      ◇28.IBM

      在这个浏览器最上点右键,有一个任务管理器,很有意思。

      还可以把Gmail,Google Doc变成桌面程序,还有拼写检查功能。

      就算它不兼容其他网页,但是可以只用chrome使用Google产品,速度绝对是世界第一。

      2008-9-3 10:26:09

      ◇29.yuhao.photo

      http://nikon.blogbus.com

      正在使用中,感觉上网速度尚可,启动速度很快,关闭最后一个标签会把整个浏览器关掉很不爽!

      2008-9-3 10:26:52

      ◇30.牛皮癣治疗

      http://www.npx.com.cn

      在vista系统上无法安装flash插件

      2008-9-3 10:35:51

      ◇31.saulis

      Google Chrome浏览器的隐藏功能和彩蛋

      about:version - 显示当前版本 也可以是chrome-resource://about/

      about:plugins - 显示已安装插件

      about:histograms - 显示历史记录

      about:dns - 显示DNS状态

      about:cache, 重定向到 view-cache: 显示缓存页面

      view-cache:stats - 缓存状态

      about:stats - 显示状态

      about:network - 很酷的网络工具

      about:internets - 这应该算是一个彩蛋

      chrome-resource://new-tab/ - 新标签页

      2008-9-3 10:36:58

      ◇32.瑞星杀毒软件

      http://www.ruixing100.cn

      用上了 速度不错 应该说很牛叉 一些有插件的站 需要加载时间比较长 比如开心

      2008-9-3 10:39:22

      ◇33.heheji

      怎么好像看视频没有声音

      2008-9-3 10:54:41

      ◇34.贝壳

      http://koolin.cn

      感觉不如FF那么多功能好用

      2008-9-3 11:00:33

      ◇35.suzhoushouji

      http://www.suzhoushouji.com/

      对于Web开发程序员来说,喜忧参半,因为又多了一个需要兼容的浏览器。

      啥时候是个头啊...

      2008-9-3 11:20:58

      ◇36.zach

      正在用chrome回复中……

      浏览页面应该来说很正常,浏览那些不符合标准的页面倒确实不是很正常。

      已将firefox放弃中,虽然firefox确实很不错,不过有google的自然是用google的,感觉Mozilla倒应该会觉得被google背叛,摆了一刀。

      2008-9-3 11:25:34

      ◇37.zach

      还有就是将chrome的推广放到Google首页,真的是比什么宣传都来得有效啊

      2008-9-3 11:32:24

      ◇38.andy

      唉~个人觉得美中不足的就是那个图案,搞得像腾讯一样的,郁闷~

      2008-9-3 11:32:51

      ◇39.爱燕博客

      http://wozhuanqian.blogstop.com

      刚刚用了,初次感觉超爽。

      2008-9-3 11:37:33

      ◇40.slowsay

      bz,最好把你的ADVANCE放到别的地方,这样看的不爽,如果能改

      2008-9-3 11:42:06

      ◇41.唏嘘一世

      http://www.xixuyishi.com/

      感觉不错。哈哈

      2008-9-3 11:42:08

      ◇42.sol

      http://www.solzhang.com

      在用了,你的更新稍慢…………

      2008-9-3 11:55:19

      ◇43.iiren

      http://www.iiren.org

      测试了我的blog,真是超级快啊

      2008-9-3 12:11:17

      ◇44.diytz

      http://www.diytz.cn

      请问你用的什么主题? 我很喜欢这个主题,尤其是它的颜色和横着的分类列表.

      2008-9-3 12:55:43

      ◇45.dabyee

      http://dujiangqi.cn

      又安装不上adoble flash player , 是网通的问题?

      2008-9-3 12:57:19

      ◇46.HF

      chrome操作很别扭.

      2008-9-3 13:04:04

      ◇47.dabyee

      http://dujiangqi.cn

      我用代理安装adoble flash player,怎么掉出来IE的代理设置?难道这也是个IE的壳?

      2008-9-3 13:04:49

      ◇48.Josh

      操作不習慣.

      2008-9-3 13:09:51

      ◇49.zzyz

      http://www.zyzzad.com/blog/

      那么好,我也要下载来试试~~

      2008-9-3 13:47:59

      ◇50.小人物的博客

      http://www.54xrw.cn

      真得不错,我也下载了一个正用着,哪天出个试用报告,呵呵

      2008-9-3 13:57:31

      ◇51.xx

      2k不能用..泪奔

      2008-9-3 14:05:26

      ◇52.pumadong

      http://www.5xyz.cn

      我的windows2003下使用了,还不错。

      2008-9-3 14:13:01

      ◇53.itwenda

      http://www.itwenda.com

      简洁易用

      有偶然的假死现象

      2008-9-3 14:18:54

      ◇54.kvspas

      http://www.kvspas.com

      早上6点就有发布在博客园的评测了。

      2008-9-3 14:19:13

      ◇55.samaria

      http://hi.baidu.com/samaria_g

      要说chrome是为了配合使用google的一些软件,那应该是比较好的,像Gmail,而且也相信这也是chrome初期最吸引人的地方,google今年的一系列行动看来还真火力不少!一方面势要跟百度拼个高低,一方面又要和微软干场硬仗,推出配合自己优势产品的浏览器,加上全球推广的输入法……这是想要霸占整个互联网呢???

      2008-9-3 14:24:44

      ◇56.自由博客

      http://www.tofree.net

      还可以啊。已经换上了

      2008-9-3 14:27:11

      ◇57.Sleven

      http://www.skyine.cn/

      正在试用,呵呵~

      2008-9-3 15:19:43

      ◇58.pig

      不错,页面显示和Safari的效果一样。

      2008-9-3 15:30:54

      ◇59.dodo

      图新鲜也在第一时间下载来使用了。但发现部分网页显示不正常,不知道什么原因?打开一些网站,排版出现错误,明明横着的链接,全部变成竖着排放了。刚刚打开QZONE,显示也很不正常,很多链接甚至无法打开。有待改善。

      2008-9-3 15:37:42

      ◇60.dodo

      不过速度很快。之前用IE,下载个adoble flash player半天没下下来(可能是我网速的问题?),但这次用chrome,半分钟不用,就搞定了。

      2008-9-3 15:39:47

      ◇61.曾经拥有

      http://blog.sina.com.cn/lpgliqinger

      我花了半天时间写了详细评测,有兴趣的去看看。

      月光写的太少了。。。。

      2008-9-3 16:12:30

      ◇62.324745906

      谁教教1我怎么用这个浏览器看正常的q—zone啊 怎么会自动变成空间隐藏的那个r ss啊 2还有我博客上的字体怎么变恁奇怪。3如果把地址栏的网址删掉后 再刷新页面也无济于事 4http://{gmail账户}:{口令}....@gmail.google.com/gmail/feed/atom 看到的东西好奇怪

      2008-9-3 16:20:14

      ◇63.逍遥云中仙

      http://www.mcvb.cn

      只可惜不支持网银~~~~~~~~~~~

      2008-9-3 16:26:04

      ◇64.鬼火

      http://www.birdpig.com

      大家用一段时间之后出一个严格具体的评测吧

      2008-9-3 16:31:57

      ◇65.allen

      是网银不支持它,国内网银只认ie

      2008-9-3 16:32:54

      ◇66.chxwei

      当前部分JS在chrome中并不运行,JavaScript V8引擎在google也只有英文的说明。

      2008-9-3 16:39:02

      ◇67.山猫

      没有撤销关闭标签页,

      没法按需激活 flash

      2008-9-3 16:39:03

      ◇68.管智鹏

      http://www.guanzhipeng.com

      以后GOOGLE是推广自己的还是推广FIREFOX呀??

      FIREFOX的首页还会是GOOGLE吗?

      2008-9-3 16:58:57

      ◇69.11111111111

      11111111111111111111111111[URL][/URL]网站链接

      2008-9-3 17:02:32

      ◇70.狗狗

      不能看QQ空间!肯定不会被小孩子喜欢!

      2008-9-3 17:03:22

      ◇71.两耳失聪

      http://www.xpbeta.com

      月光,我有一点疑问,你最近发布的,都是新闻,而这个在其他网站都可以看到,我们更期待的是你对Chrome的看法和测评。

      如果月光博客已经只是一个Beta消息站,还有必要看吗?

      这么久最喜欢的就是月光博客,最近的更新太令人失望了。

      可惜说是月光博客,让我开始使用google reader的



    本文转自

    http://www.williamlong.info/archives/1484.html
    展开全文
  • 作为一个软件开发者,你一定会对网络应用如何工作有一个完整的... 首先嘛,你得在浏览器里输入要网址:2. 浏览器查找域名的IP地址导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下:* 浏览器缓存 – 浏览器
    作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。
    本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~
    1. 首先嘛,你得在浏览器里输入要网址:



    2. 浏览器查找域名的IP地址


    导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下:
    * 浏览器缓存 – 浏览器会缓存DNS记录一段时间。 有趣的是,操作系统没有告诉浏览器储存DNS记录的时间,这样不同浏览器会储存个自固定的一个时间(2分钟到30分钟不等)。
    * 系统缓存 – 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用(windows里是gethostbyname)。这样便可获得系统缓存中的记录。
    * 路由器缓存 – 接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存。
    * ISP DNS 缓存 – 接下来要check的就是ISP缓存DNS的服务器。在这一般都能找到相应的缓存记录。
    * 递归搜索 – 你的ISP的DNS服务器从跟域名服务器开始进行递归搜索,从.com顶级域名服务器到Facebook的域名服务器。一般DNS服务器的缓存中会 有.com域名服务器中的域名,所以到顶级服务器的匹配过程不是那么必要了。

    DNS递归查找如下图所示:
    500pxAn_example_of_theoretical_DNS_recursion_svg.png


    DNS有一点令人担忧,这就是像wikipedia.org 或者 facebook.com这样的整个域名看上去只是对应一个单独的IP地址。还好,有几种方法可以消除这个瓶颈:
    * 循环 DNS 是DNS查找时返回多个IP时的解决方案。举例来说,Facebook.com实际上就对应了四个IP地址。
    * 负载平衡器 是以一个特定IP地址进行侦听并将网络请求转发到集群服务器上的硬件设备。 一些大型的站点一般都会使用这种昂贵的高性能负载平衡器。
    * 地理 DNS 根据用户所处的地理位置,通过把域名映射到多个不同的IP地址提高可扩展性。这样不同的服务器不能够更新同步状态,但映射静态内容的话非常好。
    * Anycast 是一个IP地址映射多个物理主机的路由技术。 美中不足,Anycast与TCP协议适应的不是很好,所以很少应用在那些方案中。

    大多数DNS服务器使用Anycast来获得高效低延迟的DNS查找。
    3. 浏览器给web服务器发送一个HTTP请求

    因为像Facebook主页这样的动态页面,打开后在浏览器缓存中很快甚至马上就会过期,毫无疑问他们不能从中读取。
    所以,浏览器将把一下请求发送到Facebook所在的服务器
    GET HTTP://facebook.com/ HTTP/1.1
    Accept: application/x-ms-application, image/jpeg, application/xaml+xml, [...]
    User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...]
    Accept-Encoding: gzip, deflate
    Connection: Keep-Alive
    Host: facebook.com
    Cookie: datr=1265876274-[...]; locale=en_US; lsd=WW[...]; c_user=2101[...]

    GET 这个请求定义了要读取的URL: “HTTP://facebook.com/”。 浏览器自身定义 (User-Agent 头), 和它希望接受什么类型的相应 (Accept and Accept-Encoding 头). Connection头要求服务器为了后边的请求不要关闭TCP连接。
    请求中也包含浏览器存储的该域名的cookies。可能你已经知道,在不同页面请求当中,cookies是与跟踪一个网站状态相匹配的键值。这样cookies会存储登录用户名,服务器分配的密码和一些用户设置等。Cookies会以文本文档形式存储在客户机里,每次请求时发送给服务器
    用来看原始HTTP请求及其相应的工具很多。作者比较喜欢使用fiddler,当然也有像FireBug这样其他的工具。这些软件在网站优 化时会帮上很大忙。
    除了获取请求,还有一种是发送请求,它常在提交表单用到。发送请求通过URL传递其参数(e.g.:HTTP://robozzle.com/puzzle.aspx?id=85)。发送请求在请求正文头之后发送其参数。

    像“HTTP://facebook.com/”中的斜杠是至关重要的。这种情况下,浏览器能安全的添加斜杠。而像“HTTP: //example.com/folderOrFile”这样的地址,因为浏览器不清楚folderOrFile到底是文件夹还是文件,所以不能自动添加 斜杠。这时,浏览器就不加斜杠直接访问地址,服务器会响应一个重定向,结果造成一次不必要的握手。
    4. facebook服务的永久重定向响应

    图中所示为Facebook服务器发回给浏览器的响应:
    HTTP/1.1 301 Moved Permanently
    Cache-Control: private, no-store, no-cache, must-revalidate, post-check=0,
    pre-check=0
    Expires: Sat, 01 Jan 2000 00:00:00 GMT
    Location: HTTP://www.facebook.com/
    P3P: CP=”DSP LAW”
    Pragma: no-cache
    Set-Cookie: made_write_conn=deleted; expires=Thu, 12-Feb-2009 05:09:50 GMT;
    path=/; domain=.facebook.com; httponly
    Content-Type: text/html; charset=utf-8
    X-Cnection: close
    Date: Fri, 12 Feb 2010 05:09:51 GMT
    Content-Length: 0

    服务器给浏览器响应一个301永久重定向响应,这样浏览器就会访问“HTTP://www.facebook.com/” 而非“HTTP://facebook.com/”。
    为什么服务器一定要重定向而不是直接发会用户想看的网页内容呢?这个问题有好多有意思的答案。
    其中一个原因跟搜索引擎排名有 关。你看,如果一个页面有两个地址,就像HTTP://www.igoro.com/ 和HTTP://igoro.com/,搜索引擎会认为它们是两个网站,结果造成每一个的搜索链接都减少从而降低排名。而搜索引擎知道301永久重定向是 什么意思,这样就会把访问带www的和不带www的地址归到同一个网站排名下。
    还有一个是用不同的地址会造成缓存友好性变差。当一个页面有好几个名字时,它可能会在缓存里出现好几次。
    5. 浏览器跟踪重定向地址


    现在,浏览器知道了 “HTTP://www.facebook.com/”才是要访问的正确地址,所以它会发送另一个获取请求:
    GET HTTP://www.facebook.com/ HTTP/1.1
    Accept: application/x-ms-application, image/jpeg, application/xaml+xml, [...]
    Accept-Language: en-US
    User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...]
    Accept-Encoding: gzip, deflate
    Connection: Keep-Alive
    Cookie: lsd=XW[...]; c_user=21[...]; x-referer=[...]
    Host: www.facebook.com

    头信息以之前请求中的意义相同。
    6. 服务器“处理”请求


    服务器接收到获取请求,然后处理并返回一个响应。
    这表面上看起来是一个顺向的任务,但其实这中间发生了很多有意思的东西- 就像作者博客这样简单的网站,何况像facebook那样访问量大的网站呢!
    * Web 服务器软件web服务器软件(像IIS和阿帕奇)接收到HTTP请求,然后确定执行什么请求处理来处理它。请求处理就 是一个能够读懂请求并且能生成HTML来进行响应的程序(像ASP.NET,PHP,RUBY…)。
    举 个最简单的例子,需求处理可以以映射网站地址结构的文件层次存储。像HTTP://example.com/folder1/page1.aspx这个地 址会映射/httpdocs/folder1/page1.aspx这个文件。web服务器软件可以设置成为地址人工的对应请求处理,这样 page1.aspx的发布地址就可以是HTTP://example.com/folder1/page1* 请求处理请求处理阅读 请求及它的参数和cookies。它会读取也可能更新一些数据,并讲数据存储在服务器上。然后,需求处理会生成一个HTML响应。
    所 有动态网站都面临一个有意思的难点 -如何存储数据。小网站一半都会有一个SQL数据库来存储数据,存储大量数据和/或访问量大的网站不得不找一些办法把数据库分配到多台机器上。解决方案有:sharding (基于主键值讲数据表分散到多个数据库中),复制,利用弱语义一致性的简化数据库。
    委托工作给批处理是一个廉价保持数据更新的技术。举例来讲,Fackbook得及时更新新闻feed,但数据支持下的“你可能认识的人”功能只需要每晚更新(作者猜测是这样的,改功能如何完善不得而知)。批处理作业更新会导致一些不太重要的数据陈旧,但能使数据更新耕作更快更简洁。7. 服务器发回一个HTML响应


    图中为服务器生成并返回的响应:
    HTTP/1.1 200 OKCache-Control: private, no-store, no-cache, must-revalidate, post-check=0,pre-check=0Expires: Sat, 01 Jan 2000 00:00:00 GMTP3P: CP=”DSP LAW”Pragma: no-cacheContent-Encoding: gzipContent-Type: text/html; charset=utf-8X-Cnection: closeTransfer-Encoding: chunkedDate: Fri, 12 Feb 2010 09:05:55 GMT
    2b3Tn@[...]
    整个响应大小为35kB,其中大部分在整理后以blob类型传输。
    内容编码头告诉浏览器整个响应体用 gzip算法进行压缩。解压blob块后,你可以看到如下期望的HTML:
    HTTP://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>lang=”en” id=”facebook”>

    关于压缩,头信息说明了是否缓存这个页面,如果缓存的话如何去做,有什么cookies要去设置(前面这个响应里没有这点)和隐私信息等 等。
    请注意报头中把Content-type设置为“text/html”。报头让浏览器将该响应内容以HTML形式呈现,而不是以文件形式下 载它。浏览器会根据报头信息决定如何解释该响应,不过同时也会考虑像URL扩展内容等其他因素。8. 浏览器开始显示HTML
    在浏览器没有完整接受全部HTML文档时,它就已经开始显示这个页面了:


    9. 浏览器发送获取嵌入在HTML中的对象


    在浏览器显示HTML时,它会注意到需要获取其他地址内容的标签。这时,浏览器会发送一个获取请求来重新获得这些文件。
    下面是几个我们访问facebook.com时需要重获取的几个URL:
    * 图片
    HTTP://static.ak.fbcdn.net/rsrc.php/z12E0/hash/8q2anwu7.gif
    HTTP://static.ak.fbcdn.net/rsrc.php/zBS5C/hash/7hwy7at6.gif
    * CSS 式样表
    HTTP://static.ak.fbcdn.net/rsrc.php/z448Z/hash/2plh8s4n.css
    HTTP://static.ak.fbcdn.net/rsrc.php/zANE1/hash/cvtutcee.css
    * JavaScript 文件
    HTTP://static.ak.fbcdn.net/rsrc.php/zEMOA/hash/c8yzb6ub.js
    HTTP://static.ak.fbcdn.net/rsrc.php/z6R9L/hash/cq2lgbs8.js

    这些地址都要经历一个和HTML读取类似的过程。所以浏览器会在DNS中查找这些域名,发送请求,重定向等等…
    但不像动态页面那样,静态文件会允许浏览器对其进行缓存。有的文件可能会不需要与服务器通讯,而从缓存中直接读取。服务器的响应中包含了静态文件保存的期限信息,所以浏览器知道要把它们缓存多长时间。还有,每个响应都可能包含像版本号一样工作的ETag头(被请求变量的实体值),如果浏览器观察到文件的版本 ETag信息已经存在,就马上停止这个文件的传输。
    试着猜猜看“fbcdn.net”在地址中代表什么?聪明的答案是”Facebook内容分发网络”。Facebook利用内容分发网络 (CDN)分发像图片,CSS表和 JavaScript文件这些静态文件。所以,这些文件会在全球很多CDN的数据中心中留下备份。
    静态内容往往代表站点的带宽大小,也能通过CDN轻松的复制。通常网站会使用第三方的CDN。例如,Facebook的静态文件由最大的 CDN提供商Akamai来托管。
    举例来讲,当你试着ping static.ak.fbcdn.net的时候,可能会从某个akamai.net服务器上获得响应。有意思的是,当你同样再ping一次的时候,响应的 服务器可能就不一样,这说明幕后的负载平衡开始起作用了。10. 浏览器发送异步(AJAX)请求


    在Web 2.0伟大精神的指引下,页面显示完成后客户端仍与服务器端保持着联系。
    以 Facebook聊天功能为例,它会持续与服务器保持联系来及时更新你那些亮亮灰灰的好友状态。为了更新这些头像亮着的好友状态,在浏览器中执行的 JavaScript代码会给服务器发送异步请求。这个异步请求发送给特定的地址,它是一个按照程式构造的获取或发送请求。还是在Facebook这个例子中,客户端发送给HTTP://www.facebook.com/ajax/chat/buddy_list.php一个发布请求来获取你好友里哪个 在线的状态信息。
    提起这个模式,就必须要讲讲”AJAX”– “异步JavaScript 和 XML”,虽然服务器为什么用XML格式来进行响应也没有个一清二白的原因。再举个例子吧,对于异步请求,Facebook会返回一些 JavaScript的代码片段。
    除了其他,fiddler这个工具能够让你看到浏览器发送的异步请求。事实上,你不仅可以被动的做为这些请求的看客,还能主动出击修改和重 新发送它们。AJAX请求这么容易被蒙,可着实让那些计分的在线游戏开发者们郁闷的了。(当然,可别那样骗人家~)
    Facebook聊天功能提供了关于AJAX一个有意思的问题案例:把数据从服务器端推送到客户端。因为HTTP是一个请求-响应协议,所 以聊天服务器不能把新消息发给客户。取而代之的是客户端不得不隔几秒就轮询下服务器端看自己有没有新消息。
    这些情况发生时长轮询是个减轻服务器负载挺有趣的技术。如果当被轮询时服务器没有新消息,它就不理这个客户端。而当尚未超时的情况下收到了 该客户的新消息,服务器就会找到未完成的请求,把新消息做为响应返回给客户端。总结一下
    希望看了本文,你能明白不同的网络模块是如何协同工作的
    本篇文章来源于 站长资讯网 原文链接:http://www.chinahtml.com/1007/127890385919293_2.html

     

     

     

     

    我们似乎每天都要做这样一件事情,打开一个浏览器,输入网址,回车,一个空白的页面顿时有了东西,它可能是百度之类的搜索页面,或是一个挤满了文字和图片的门户网站。从我们打开浏览器,到我们看到我们想看的内容,这过程究竟发生了什么?
    下面我们就从三个方面理解这个过程,一个是浏览器,二个是服务器,第三个是浏览器和服务器之间通信的协议。在理解这三方面之前我们必须先搞明白将这三方面联系起来的一个词:web。 

    1,world wide web 
    我们通常所说的web就是指world wide web。一般来讲,这一种通过浏览器来访问资源的技术。我们经常说的上网,应该大部都是指的是上万维网(web),但是我们经常将万维网和因特网(Internet)搞混。因特网是一种网络互连的技术,它更指的是物理层面上的互连,而万维网应该算是跑在因特网上的一种服务。
    我们通常通过浏览器还访问web,我们常见到的网页中包含超文本,图片,视频音频等各项内容。向我们提供这些资源的是一个一个的站点,通过互联网,这些站点相互连接起来。我们通过超链接从一个网页访问到另外一个网页,从一个站点到另外一个站点,所有的这一切组成一个庞大的网,这就是web。
    支持web的技术,首先是底层的网络,因为web就是建立在Internet之上,web的基本协议是HTTP协议,它跑在TCP上的协议之上,而TCP协议又需要IP协议的支持,IP协议又要由底层链路来支撑,所以我们可以从高到第看到这样一个协议栈 http->tcp->ip->连路层协议。要理解web到ip就已经足够了。
    我们可以想一想web上的资源有哪些? 首先是文本,后来添加了图片,到现在的各种音频视频资源,所有互联网上的资源都要通过一个叫做URI的东西还标记,当然了我们更常见是URL。现在也不必纠结于两者有何不同,URL就是URI的一个子集,URL给了我们资源的地址,所以我们能够找到它。
    现在看一个URL:这是一个图片的url。它是按照这样的语法来定义:scheme://domain:port/path?query_string#fragment_id.scheme就是协议,在浏览器里通常是http,例子中的是https是一种由HTTP和SSL/TLS组合起来的应用,用以提供加密通信和对网络服务器的身份验证(http://zh.wikipedia.org/zh/HTTPS )。然后就是域名,每个站点都至少有一个域名,上面例子上的域名部分是www.google.com.hk,这个域名也是分为三部分的,www是主机名,com.hk算是顶级域名,除了com还有cn,net等。域名后面是端口号默认为80,通常被省略,这是服务器端服务器软件侦听的端口,也是TCP里面一个端口号的值。然后就是path,资源在服务器上的路径。最后问号部分的客户端利用url传给服务器的一些参数值,通常值比较少,不太重要时这么做。
    2,协议
    (1)HTTP协议
    web里最重要的协议就是HTTP协议,对于经典的ISO七层网络模型来说, HTTP处于最高层--应用层。HTTP应用的模型是client/server模型。因此对应着两种HTTP消息类型,request和response。客户端向服务器发出请求,服务器向客户端发回请求。下面看一下两种类型消息的格式:



     
    下面分别进行解释。
    首先是HTTP Request Message
    请求行:请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本。请求方法常见的有:GET POST HEAD PUT等。
    消息报头:在普通报头中,有少数报头域用于所有的请求和响应消息,但并不用于被传输的实体,只用于传输的消息。 请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。 请求和响应消息都可以传送一个实体。一个实体由实体报头域和实体正文组成,但并不是说实体报头域和实体正文要在一起发送,可以只发送实体报头域。实体报头定义了关于实体正文(eg:有无实体正文)和请求所标识的资源的元信息。 POST请求的内容放在实体正文中。 
    HTTP Response Message
    状态行:最主要的一个字段是服务器响应代码。比如,200 OK ,400 Bad Request ,401 Unauthorized ,403 Forbidden ,404 Not Found ,500 Internal Server Error ,503 Server Unavailable
    消息报头:普通报头和实体报头与 请求报头的类似。有区别的在于响应包头,响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。
    (这部分说的比较粗略,网上的资源比较多,可以参考这一篇:http://blog.csdn.net/gueter/article/details/1524447 和http://book.51cto.com/art/200902/109036.htm )
    下面是ethereal抓到的一个get报文,post报文和响应报文,可以大概看一下。
     
     
     
    (2)TCP协议
    HTTP协议基于TCP协议,也就是HTTP的所有内容将作为TCP的实体被封装到TCP报文里面。TCP协议是面向连接,可靠的传输机制。也就是说客户端在与服务器交互数据的过程中会有一个连接建立和释放的过程,看上面的Http头部字段可以看到相关的字段。TCP有强大的窗口机制能够适应发送方和接收方的发送接收能力,也能根据整个网络状况进行调整。
    (3)IP协议
    IP协议处于整个TCP/IP协议族的承上启下地位。我们知道因特网上主机是靠一个32位的ip地址来定位的,HTTP用的URL也算是地址,但是比较高级,IP协议是理解不了的,所以需要一个从URL到IP的转换,这个过程通过DNS(域名查询系统)协议完成。我们用的每一台电脑上都配置了DNS服务器的地址,如果没有配置那么你的网关默认充当了,当我们有一个URL想知道对应的IP时就需要向DNS服务器发送查询请求了,它会把查询的结果发回。
    2,浏览器
    在web的世界里最不能少的角色就是浏览器。前面我们说到HTTP协议,HTTP消息有两种,request和response。浏览器的主要工作就是发送http request报文和接收处理http response报文。没有看过浏览器的开源文档,但是我觉得一个软件只要完成下面几件事,基本上就可以称的上一个浏览器了。
    (1)能够根据用户的请求生成合适的HTTP REQUEST报文。比如用户在浏览器地址栏上输入地址进行访问,浏览器要能够生成HTTP GET报文,表单的发送生成POST报文等等。
    (2) 能够对各种的RESPONSE进行处理。
    (3)渲染Html文档,生成文档树,能够解释css,还要有个javascript引擎。
    (4)能够发起dns查询得到ip地址。
    浏览器是个非常复杂的软件,当然现在的浏览器对http协议的支持应该不是问题,它们主要纠结于html文档渲染部分,对于用户层出不穷的新需求,w3c层出不穷的新标准,浏览器的路应该才刚刚开始。 
    3, 服务器
    服务器有两个层级的概念,它可以是机器,它上面存着一个站点的所有东西,也可以是软件,安装在一个也叫做服务器的机器上,帮助这个机器分发用户想要的东西。 我对服务器研究不多,只是用过几次apache。所以只是简单的谈谈我的认识。
    服务器最基本的功能就是响应客户端的资源请求。服务器首先会侦听80端口,来了http请求,就根据请求进行处理,请求一个图片那就根据路径找到资源发回,请求静态html页面也是如此,如果请求的是像php这样的动态页面应该先调用php编译器(或是解释器吧)生成html代码,然后返回给客户端。当然还要解决的一个问题就是并行问题以应对大访问量。
    因为对这方面不太了解,只想到了这么多。

    先说到这里, 有了新的认识再写。


    来源:http://www.cnblogs.com/orchid/archive/2012/04/21/2461442.html

     

     

    来源:从输入网址到显示网页的全过程分析
    http://www.itmian4.com/forum.php?mod=viewthread&tid=1655&fromuid=1931

    展开全文
  • 浏览器介绍

    2020-10-18 10:41:26
    浏览器 浏览器结构组成 浏览器一般由七个模块组成: User Interface(用户界面) Browser engine(浏览器引擎) Rendering engine(渲染引擎) Networking(网络) ...浏览器引擎 -可以用户界面和渲染引

    浏览器

    浏览器发展历史

    1991年,WorldWideWeb 浏览器发布
    这款由 Web 之父 Tim Berners-Lee 亲手设计的图形化浏览器还包含一个所见即所得 HTML 编辑器,为了避免同 WWW 混淆,这个浏览器后来改名为 Nexus。

    1993年,Mosaic 发布
    Internet 的流行应该归功于 Mosaic,这款浏览器将 Web 带向了大众。诸如 IE, Firefox 一类的当代浏览器仍然在延用 Mosaic 的图形化操作界面思想。

    1994年,Netscape 成立
    Marc Andreessen 带领 Mosaic 的程序员成立了 Netscape 公司,并发布了第一款商业浏览器 Netscape Navigator。

    1995年,IE 发布,浏览器之战即将爆发
    微软针对 Netscape 发布了他们自己的浏览器,IE,第一场浏览器之战爆发。

    1996年,Opera 发布
    Telenor 是挪威最大的通讯公司,他们推出了 Opera,并在两年后进军移动市场,推出 Opera 的移动版。

    1998年,Mozilla 项目成立
    Netscape 成立 Mozilla 开源项目,开发下一代浏览器,后来证明,使用原有代码开发新东西是一种负担,接着他们着手从新开发。

    2002年,IE 开始主导浏览器市场
    市场份额达到95%,借助同操作系统的捆绑优势,IE 赢得第一场浏览器之战。

    2003年,苹果 Safari 浏览器登场
    苹果进入了浏览器市场,推出自己的 Webkit 引擎,该引擎非常优秀,后来被包括 Google, Nokia 之类的厂商用于手机浏览器。

    2004年,Firefox 引发第二场浏览器之战
    Firefox 1.0 推出。早在 Beta 测试期间就积累了大量人气的 Firefox 引发了第二场浏览器之战,当年年底,Firefox 已经赢得 7.4% 的市场份额。

    2006年,IE7 发布
    IE6 发布后的第六年,迫于 Firefox 的压力,微软匆匆推出 IE7 应战,吸取了 Firefox 的一些设计思想,如标签式浏览,反钓鱼等。但这款浏览器现在看来并不成功。

    2008年,Google 携 Chrome 参战
    Google 发布了他们自己的浏览器,加入这场战争。轻量,快,异常的稳固让这款浏览器成为不可轻视的一个对手。

    在这里插入图片描述

    浏览器结构组成

    浏览器一般由七个模块组成:

    User Interface(用户界面)

    Browser engine(浏览器引擎)

    Rendering engine(渲染引擎)

    Networking(网络)

    JavaScript Interpreter(js解释器)

    UI Backend(UI 后端)

    Date Persistence(数据持久化存储)
    如下图:

    在这里插入图片描述
    用户界面 -包括地址栏、后退/前进按钮、书签目录等,也就是你所看到的除了页面显示窗口之外的其他部分.

    浏览器引擎 -可以在用户界面和渲染引擎之间传送指令或在客户端本地缓存中读写数据等,是浏览器中各个部分之间相互通信的核心.

    渲染引擎 -解析DOM文档和CSS规则并将内容排版到浏览器中显示有样式的界面,也有人称之为排版引擎,我们常说的浏览器内核主要指的就是渲染引擎.

    网络 -用来完成网络调用或资源下载的模块

    UI 后端 -用来绘制基本的浏览器窗口内控件,如输入框、按钮、单选按钮等,根据浏览器不同绘制的视觉效果也不同,但功能都是一样的。

    JS解释器 -用来解释执行JS脚本的模块,如 V8 引擎、JavaScriptCore
    数据存储 -浏览器在硬盘中保存 cookie、localStorage等各种数据,可通过浏览器引擎提供的API进行调用。

    浏览器渲染引擎

    浏览器渲染引擎是由各大浏览器厂商依照 W3C 标准自行研发的,也被称之为「浏览器内核」。

    目前,市面上使用的主流浏览器内核有5类:
    Trident
    Gecko
    Presto
    Webkit
    Blink。

    Trident

    Trident 就是大名鼎鼎的 IE浏览器 所使用的内核,也是很多浏览器所使用的内核,通常被称为IE内核。

    基于Trident内核的浏览器非常多,这是因为Trident内核提供了丰富的调用接口。老的Trident内核(比如常说的IE6内核)一直是不遵循W3C标准的,但是由于当时IE6的市场份额最大,所以后果就是大量的网页专门为IE6等老Trident内核编写,在IE6下显示很正常,但其实这些网页的代码并不符合W3C标准,于是,完全依据W3C标准写的网页在老的Trident内核下面又出现偏差,这就是为什么很多人觉得后来的IE9的网页排版有时会乱了,而IE6则正常,其实不是浏览器兼容性差了,而是你访问的网页不符合新的标准。

    目前可供调用的最新版的Trident内核是IE9所用的内核,相较之前的版本对W3C标准的支持增强了很多。

    Trident内核的常见浏览器有:
    IE6、IE7、IE8(Trident 4.0)、IE9(Trident 5.0)、IE10(Trident 6.0);世界之窗、 360安全浏览器、傲游;搜狗浏览器;腾讯TT;阿云浏览器(早期版本)、百度浏览器(早期版本)、瑞星安全浏览器、Slim Browser; GreenBrowser、爱帆浏览器(12 之前版本)、115浏览器、155浏览器; 闪游浏览器、N氧化碳浏览器、糖果浏览器、彩虹浏览器、瑞影浏览器、勇者无疆浏览器、114浏览器、蚂蚁浏览器、飞腾浏览器、速达浏览器、佐罗浏览器;

    其中部分浏览器的新版本是“双核”甚至是“多核”,其中一个内核是Trident,然后再增加一个其他内核。国内的厂商一般把其他内核叫做“高速浏览模式”,而Trident则是“兼容浏览模式”,用户可以来回切换。

    Gecko

    Netscape6 启用的内核,现在主要由Mozilla基金会进行维护,是开源的浏览器内核,目前最主流的Gecko内核浏览器是Mozilla Firefox,所以也常常称之为火狐内核。

    因为Firefox的出现,IE的霸主地位逐步被削弱,Chrome的出现则是加速了这个进程。非Trident内核的兴起正在改变着整个互联网,最直接的就是推动了编码的标准化,也使得微软在竞争压力下不得不改进IE。

    不过比较可惜的是,虽然是开源的,也开发了这么多年,基于Gecko的浏览器并不多见,除了一些简单的改动(坑爹的X浏览器)或者是重新编译(绫川ayakawa、tete009),深度定制或者增强型外壳的还比较少见。

    另外就是有一些其它软件借用了Gecko内核,比如音乐管理软件SongBird。

    常见的Gecko内核的浏览器:Mozilla Firefox、Mozilla SeaMonkey、Epiphany(早期版本)、Flock(早期版本)、K-Meleon

    Presto

    Opera 所采用的内核,准确地说,是Opera 7.0及以后版本的内核,Opera 3.5-6.1版本使用的内核叫做Elektra。

    Presto对W3C标准的支持也是很良好的。

    在OperaChina论坛有人说过,Presto优先解析文字,保证可阅读性,媒体资源的渲染放后。常见的Presto内核的浏览器:Opera

    Webkit

    由KHTML发展而来,也是苹果给开源世界的一大贡献。是目前最火热的浏览器内核,火热倒不是说市场份额,而是应用的面积和势头。

    因为是脱胎于KHTML,所以也是具有高速的特点,同样遵循W3C标准。从目前看来,WebKit 内核是最有潜力而且是已经有相当成绩的新兴内核,性能非常好,而且对W3C标准的支持很完善。

    当前发展势头最强劲的WebKit内核,常见的WebKit内核的浏览器:Apple Safari (Win/Mac/iPhone/iPad)、Symbian手机浏览器、Android 默认浏览器,

    Blink

    由 Google 和 Opera Software 开发,在Chrome(28及往后版本)、Opera(15及往后版本)和Yandex浏览器中使用。

    Blink 其实是 Webkit 的一个分支,添加了一些优化的新特性,例如跨进程的 iframe,将 DOM 移入 JavaScript 中来提高 JavaScript 对 DOM 的访问速度等,目前较多的移动端应用内嵌的浏览器内核也渐渐开始采用 Blink。

    KHTML

    KDE开发的内核,速度快捷,容错度低。这个内核可能不见得很多人知道,但是后面再看下去你就明白了。常见的KHTML内核的浏览器:Konqueror

    Chromium(跨平台)

    其实 Chromium 就是 WebKit,维基百科里面并没有将Chromium从WebKit分出来。

    Chromium把WebKit的代码梳理得可读性提高很多,所以以前可能需要一天进行编译的代码,现在只要两个小时就能搞定。

    这个也能解释为什么Gecko和WebKit出来了这么久,第三方编译、定制的版本并不多,但是由Chromium衍生出来的浏览器早就满坑满谷了。

    常见的Chromium内核的浏览器:Google Chrome、Chromium、SRWare Iron、Comodo Dragon.

    渲染引擎的工作流程

    1.浏览器渲染引擎最重要的工作就是将 HTML 和 CSS 文档解析组合最终渲染到浏览器窗口上。如下图所示,渲染引擎在接受到 HTML 文件后主要进行了以下操作:解析 HTML 构建 DOM 树 -> 构建渲染树 -> 渲染树布局 -> 渲染树绘制

    2.解析 HTML 构建 DOM 树时渲染引擎会将 HTML 文件的便签元素解析成多个 DOM 元素对象节点,并且将这些节点根据父子关系组成一个树结构。

    同时 CSS 文件被解析成 CSS 规则表,然后将每条 CSS 规则按照「从右向左」的方式在 DOM 树上进行逆向匹配,生成一个具有样式规则描述的 DOM 渲染树。

    接下来就是将渲染树进行布局、绘制的过程。首先根据 DOM 渲染树上的样式规则,对 DOM 元素进行大小和位置的定位,关键属性如position;width;margin;padding;top;border;…,接下来再根据元素样式规则中的color;background;shadow;…规则进行绘制。

    3.这个过程是逐步完成的,为了更好的用户体验,渲染引擎将会尽可能早的将内容呈现到屏幕上,并不会等到所有的 html 都解析完成之后再去构建和布局 render 树。它是解析完一部分内容就显示一部分内容,同时,可能还在通过网络下载其余内容

    需要注意的是,在浏览器渲染完首屏页面后,如果对 DOM 进行操作会引起浏览器引擎对 DOM 渲染树的重新布局和重新绘制,我们叫做**「重排」和「重绘」**

    由于重排和重绘是前后依赖的关系,重绘发生时未必会触发渲染引擎的重排,但是如果发生了重排就必然会触发重绘操作,这样带来的性能损害就是巨大的。

    因此我们在做性能优化的时候应该遵循避免重排;减少重绘的原则。
    工作流程详解

    JavaScript引擎

    顾名思义,JavaScript引擎就是用来执行JS代码的。

    譬如说,一个算圆周率的网页,排版引擎把页面的框架给显示出来了,但最终的结果需要用到 Javascript 来计算,所以Javascript引擎的快慢也是对整个网页的速度有着很大影响。

    特别是目前越来越多类似 WebQQ、Gmail 等大量应用了复杂的 Javascript 运算的网站,不同的引擎最终的速度差异会相当大。

    很多文章在报道说哪个浏览器更快,其实大部分说的就是JavaScript的渲染速度,而不是页面的载入速度。

    在网速许可的情况下,其实各个浏览器的页面载入速度差别不大(Opera逊色一些)。

    现在JavaScript在页面中的比重会越来越大,越来越多的动态页面开始大量借助JavaScript,比如现在主流的SNS、邮箱、网页游戏,所以JavaScript的渲染速度也是一个很重要的指标。

    JavaScript的渲染速度越快,动态页面的展示也越快。Opera在JavaScript引擎的跑分上面一直都是很牛逼的,一般来说最新测试版之间PK,Opera基本都会夺冠。

    引擎分类

    1.老版本IE使用Jscript引擎,IE9之后使用Chakra引擎

    2、SpiderMonkey / TraceMonkey / JaegerMonkey
    SpiderMonkey应用在Mozilla Firefox 1.0-3.0,TraceMonkey应用在Mozilla Firefox 3.5-3.6版本,JaegerMonkey应用在Mozilla Firefox 4.0及后续的版本。

    3、V8,用C++编写,开放源代码,由Google丹麦开发,是Google Chrome的一部分,用于Node.js,Chrome、傲游3。

    4、JavaScriptCore,开放源代码,用于webkit型浏览器,如Safari ,2008年实现了编译器和字节码解释器,升级为了SquirrelFish。苹果内部代号为“Nitro”的JavaScript引擎也是基于JavaScriptCore引擎的。

    5、Linear A/Linear B/Futhark/Carakan
    Linear A应用于Opera 4.0-6.1版本
    Linear B应用于Opera 7.0~9.2版本
    Futhark应用于Opera 9.5-10.2版本
    Carakan应用于Opera 10.5及后续的版本。

    6、KJS,KDE的ECMAScript/JavaScript引擎,最初由哈里·波顿开发,用于KDE项目的Konqueror网页浏览器中。
    JS引擎详解1
    JS引擎详解2

    扩展

    1、IETab
    这是一款浏览器扩展,并非内核。在没有第三方编译版本的时候,IETab一直是 Mozilla Firefox、Chrome等非Trident内核的浏览器的安装量最大的扩展之一,方便用户在不开启IE的情况下调用Trident内核访问一些兼容性比较差的网站。

    2、Trident/Gecko双核浏览器
    虽然IETab能实现部分需求,但是深度订制的毕竟还是不一样,所以Trident/Gecko双核浏览器就诞生了,Sleipnir、Avant 12(Orca)是这类里面比较常见的。Avant 12因为有Orca的前期积累,所以轻车熟路,后面还打算加入Chromium,变成三核浏览器.

    3、Trident/WebKit双核浏览器
    现在国内最主流的“双核”浏览器基本都是这个架构,360极速浏览器、世界之窗浏览器极速版、傲游3搜狗浏览器3、QQ浏览器、枫树浏览器、快快浏览器、百度浏览器、阿云浏览器(后期版本)、太阳花浏览器.

    其它双核浏览器都是基于Chromium的,而傲游是基于WebKit的,但是用的是V8引擎。

    4、Trident/Gecko/WebKit三核浏览器
    目前能见的应该就是日本的Lunascape,Avant增加了WebKit内核之后也会归类到这里。Lunascape各个内核相对独立,外壳本身不够强化,稳定性不高,所以还不如用回单核浏览器。

    展开全文
  • 作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的...1. 首先嘛,你得在浏览器里输入要网址: 2. 浏览器查找域名的IP地址 导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下: ...

    作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。

    本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~

    1. 首先嘛,你得在浏览器里输入要网址:

    2. 浏览器查找域名的IP地址

    导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下:

     

    域名解析服务器,靠它把你要访问的网址找到然后把信息送到你电脑上。
    DNS 是域名系统 (Domain Name System) 的缩写,它是由解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域名必须对应一个IP地址,而IP地址不一定有域名。域名系统采用类似目录树的等级结构。域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。将域名映射为IP地址的过程就称为“域名解析”。在Internet上域名与IP地址之间是一对一(或者多对一)的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。 DNS 命名用于 Internet 等 TCP/IP 网络中,通过用户友好的名称查找计算机和服务。当用户在应用程序中输入 DNS 名称时,DNS 服务可以将此名称解析为与之相关的其他信息,如 IP 地址。因为,你在上网时输入的网址,是通过域名解析系统解析找到了相对应的IP地址,这样才能上网。其实,域名的最终指向是IP。

     

    • 浏览器缓存 – 浏览器会缓存DNS记录一段时间。 有趣的是,操作系统没有告诉浏览器储存DNS记录的时间,这样不同浏览器会储存个自固定的一个时间(2分钟到30分钟不等)。
    • 系统缓存 – 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用(windows里是gethostbyname)。这样便可获得系统缓存中的记录。
    • 路由器缓存 – 接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存。
    • ISP DNS 缓存 – 接下来要check的就是ISP缓存DNS的服务器。在这一般都能找到相应的缓存记录。
    • 递归搜索 – 你的ISP的DNS服务器从跟域名服务器开始进行递归搜索,从.com顶级域名服务器到Facebook的域名服务器。一般DNS服务器的缓存中会有.com域名服务器中的域名,所以到顶级服务器的匹配过程不是那么必要了。

    DNS递归查找如下图所示:

     

    DNS有一点令人担忧,这就是像wikipedia.org 或者 facebook.com这样的整个域名看上去只是对应一个单独的IP地址。还好,有几种方法可以消除这个瓶颈:

    • 循环 DNS 是DNS查找时返回多个IP时的解决方案。举例来说,Facebook.com实际上就对应了四个IP地址。
    • 负载平衡器 是以一个特定IP地址进行侦听并将网络请求转发到集群服务器上的硬件设备。 一些大型的站点一般都会使用这种昂贵的高性能负载平衡器。
    • 地理 DNS 根据用户所处的地理位置,通过把域名映射到多个不同的IP地址提高可扩展性。这样不同的服务器不能够更新同步状态,但映射静态内容的话非常好。
    • Anycast 是一个IP地址映射多个物理主机的路由技术。 美中不足,Anycast与TCP协议适应的不是很好,所以很少应用在那些方案中。

    大多数DNS服务器使用Anycast来获得高效低延迟的DNS查找。

     

    3. 浏览器给web服务器发送一个HTTP请求

     

    因为像Facebook主页这样的动态页面,打开后在浏览器缓存中很快甚至马上就会过期,毫无疑问他们不能从中读取。

    所以,浏览器将把一下请求发送到Facebook所在的服务器:

    GET http://facebook.com/ HTTP/1.1
     Accept: application/x-ms-application, image/jpeg, application/xaml+xml, [...]
     User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...]
     Accept-Encoding: gzip, deflate
     Connection: Keep-Alive
     Host: facebook.com
     Cookie: datr=1265876274-[...]; locale=en_US; lsd=WW[...]; c_user=2101[...]

    GET 这个请求定义了要读取的URL: “http://facebook.com/”。 浏览器自身定义 (User-Agent 头), 和它希望接受什么类型的相应 (Accept and Accept-Encoding 头). Connection头要求服务器为了后边的请求不要关闭TCP连接。

    请求中也包含浏览器存储的该域名的cookies。可能你已经知道,在不同页面请求当中,cookies是与跟踪一个网站状态相匹配的键值。这样cookies会存储登录用户名,服务器分配的密码和一些用户设置等。Cookies会以文本文档形式存储在客户机里,每次请求时发送给服务器。

    用来看原始HTTP请求及其相应的工具很多。作者比较喜欢使用fiddler,当然也有像FireBug这样其他的工具。这些软件在网站优化时会帮上很大忙。

    除了获取请求,还有一种是发送请求,它常在提交表单用到。发送请求通过URL传递其参数(e.g.: http://robozzle.com/puzzle.aspx?id=85)。发送请求在请求正文头之后发送其参数。

    像“http://facebook.com/”中的斜杠是至关重要的。这种情况下,浏览器能安全的添加斜杠。而像“http: //example.com/folderOrFile”这样的地址,因为浏览器不清楚folderOrFile到底是文件夹还是文件,所以不能自动添加 斜杠。这时,浏览器就不加斜杠直接访问地址,服务器会响应一个重定向,结果造成一次不必要的握手。 

    4. facebook服务的永久重定向响应

    图中所示为Facebook服务器发回给浏览器的响应:

    HTTP/1.1 301 Moved Permanently
     Cache-Control: private, no-store, no-cache, must-revalidate, post-check=0,
     pre-check=0
     Expires: Sat, 01 Jan 2000 00:00:00 GMT
     Location: http://www.facebook.com/
     P3P: CP="DSP LAW"
     Pragma: no-cache
     Set-Cookie: made_write_conn=deleted; expires=Thu, 12-Feb-2009 05:09:50 GMT;
     path=/; domain=.facebook.com; httponly
     Content-Type: text/html; charset=utf-8
     X-Cnection: close
     Date: Fri, 12 Feb 2010 05:09:51 GMT
     Content-Length: 0

    服务器给浏览器响应一个301永久重定向响应,这样浏览器就会访问“http://www.facebook.com/” 而非“http://facebook.com/”。

    为什么服务器一定要重定向而不是直接发会用户想看的网页内容呢?这个问题有好多有意思的答案。

    其中一个原因跟搜索引擎排名有 关。你看,如果一个页面有两个地址,就像http://www.igoro.com/ 和http://igoro.com/,搜索引擎会认为它们是两个网站,结果造成每一个的搜索链接都减少从而降低排名。而搜索引擎知道301永久重定向是 什么意思,这样就会把访问带www的和不带www的地址归到同一个网站排名下。

    还有一个是用不同的地址会造成缓存友好性变差。当一个页面有好几个名字时,它可能会在缓存里出现好几次。

    5. 浏览器跟踪重定向地址

    现在,浏览器知道了“http://www.facebook.com/”才是要访问的正确地址,所以它会发送另一个获取请求:

    GET http://www.facebook.com/ HTTP/1.1
     Accept: application/x-ms-application, image/jpeg, application/xaml+xml, [...]
     Accept-Language: en-US
     User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...]
     Accept-Encoding: gzip, deflate
     Connection: Keep-Alive
     Cookie: lsd=XW[...]; c_user=21[...]; x-referer=[...]
     Host: www.facebook.com

    头信息以之前请求中的意义相同。

    6. 服务器“处理”请求

    服务器接收到获取请求,然后处理并返回一个响应。

    这表面上看起来是一个顺向的任务,但其实这中间发生了很多有意思的东西- 就像作者博客这样简单的网站,何况像facebook那样访问量大的网站呢!

    • Web 服务器软件
      web服务器软件(像IIS和阿帕奇)接收到HTTP请求,然后确定执行什么请求处理来处理它。请求处理就是一个能够读懂请求并且能生成HTML来进行响应的程序(像ASP.NET,PHP,RUBY...)。

      举 个最简单的例子,需求处理可以以映射网站地址结构的文件层次存储。像http://example.com/folder1/page1.aspx这个地 址会映射/httpdocs/folder1/page1.aspx这个文件。web服务器软件可以设置成为地址人工的对应请求处理,这样 page1.aspx的发布地址就可以是http://example.com/folder1/page1。

    • 请求处理
      请求处理阅读请求及它的参数和cookies。它会读取也可能更新一些数据,并讲数据存储在服务器上。然后,需求处理会生成一个HTML响应。

    所 有动态网站都面临一个有意思的难点 -如何存储数据。小网站一半都会有一个SQL数据库来存储数据,存储大量数据和/或访问量大的网站不得不找一些办法把数据库分配到多台机器上。解决方案 有:sharding (基于主键值讲数据表分散到多个数据库中),复制,利用弱语义一致性的简化数据库。

    委 托工作给批处理是一个廉价保持数据更新的技术。举例来讲,Fackbook得及时更新新闻feed,但数据支持下的“你可能认识的人”功能只需要每晚更新 (作者猜测是这样的,改功能如何完善不得而知)。批处理作业更新会导致一些不太重要的数据陈旧,但能使数据更新耕作更快更简洁。

    7. 服务器发回一个HTML响应

    图中为服务器生成并返回的响应:

    HTTP/1.1 200 OK
     Cache-Control: private, no-store, no-cache, must-revalidate, post-check=0,
     pre-check=0
     Expires: Sat, 01 Jan 2000 00:00:00 GMT
     P3P: CP="DSP LAW"
     Pragma: no-cache
     Content-Encoding: gzip
     Content-Type: text/html; charset=utf-8
     X-Cnection: close
     Transfer-Encoding: chunked
     Date: Fri, 12 Feb 2010 09:05:55 GMT
     
     2b3Tn@[...]

    整个响应大小为35kB,其中大部分在整理后以blob类型传输。

    内容编码头告诉浏览器整个响应体用gzip算法进行压缩。解压blob块后,你可以看到如下期望的HTML:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"    
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
     lang="en" id="facebook" class=" no_js">
     <head>
     <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
     <meta http-equiv="Content-language" content="en" />
     ...

    关于压缩,头信息说明了是否缓存这个页面,如果缓存的话如何去做,有什么cookies要去设置(前面这个响应里没有这点)和隐私信息等等。

    请注意报头中把Content-type设置为“text/html”。报头让浏览器将该响应内容以HTML形式呈现,而不是以文件形式下载它。浏览器会根据报头信息决定如何解释该响应,不过同时也会考虑像URL扩展内容等其他因素。

    8. 浏览器开始显示HTML

    在浏览器没有完整接受全部HTML文档时,它就已经开始显示这个页面了:

    9. 浏览器发送获取嵌入在HTML中的对象

    在浏览器显示HTML时,它会注意到需要获取其他地址内容的标签。这时,浏览器会发送一个获取请求来重新获得这些文件。

    下面是几个我们访问facebook.com时需要重获取的几个URL:

    • 图片
      http://static.ak.fbcdn.net/rsrc.php/z12E0/hash/8q2anwu7.gif

      http://static.ak.fbcdn.net/rsrc.php/zBS5C/hash/7hwy7at6.gif
    • CSS 式样表
      http://static.ak.fbcdn.net/rsrc.php/z448Z/hash/2plh8s4n.css

      http://static.ak.fbcdn.net/rsrc.php/zANE1/hash/cvtutcee.css
    • JavaScript 文件
      http://static.ak.fbcdn.net/rsrc.php/zEMOA/hash/c8yzb6ub.js
      http://static.ak.fbcdn.net/rsrc.php/z6R9L/hash/cq2lgbs8.js

    这些地址都要经历一个和HTML读取类似的过程。所以浏览器会在DNS中查找这些域名,发送请求,重定向等等...

    但 不像动态页面那样,静态文件会允许浏览器对其进行缓存。有的文件可能会不需要与服务器通讯,而从缓存中直接读取。服务器的响应中包含了静态文件保存的期限 信息,所以浏览器知道要把它们缓存多长时间。还有,每个响应都可能包含像版本号一样工作的ETag头(被请求变量的实体值),如果浏览器观察到文件的版本 ETag信息已经存在,就马上停止这个文件的传输。

    试着猜猜看“fbcdn.net”在地址中代表什么?聪明的答案是"Facebook内容分发网络"。Facebook利用内容分发网络(CDN)分发像图片,CSS表和JavaScript文件这些静态文件。所以,这些文件会在全球很多CDN的数据中心中留下备份。

    静态内容往往代表站点的带宽大小,也能通过CDN轻松的复制。通常网站会使用第三方的CDN。例如,Facebook的静态文件由最大的CDN提供商Akamai来托管。

    举例来讲,当你试着ping static.ak.fbcdn.net的时候,可能会从某个akamai.net服务器上获得响应。有意思的是,当你同样再ping一次的时候,响应的服务器可能就不一样,这说明幕后的负载平衡开始起作用了。

    10. 浏览器发送异步(AJAX)请求

    在Web 2.0伟大精神的指引下,页面显示完成后客户端仍与服务器端保持着联系。

    以 Facebook聊天功能为例,它会持续与服务器保持联系来及时更新你那些亮亮灰灰的好友状态。为了更新这些头像亮着的好友状态,在浏览器中执行的 JavaScript代码会给服务器发送异步请求。这个异步请求发送给特定的地址,它是一个按照程式构造的获取或发送请求。还是在Facebook这个例 子中,客户端发送给http://www.facebook.com/ajax/chat/buddy_list.php一个发布请求来获取你好友里哪个 在线的状态信息。

    提起这个模式,就必须要讲讲"AJAX"-- “异步JavaScript 和 XML”,虽然服务器为什么用XML格式来进行响应也没有个一清二白的原因。再举个例子吧,对于异步请求,Facebook会返回一些JavaScript的代码片段。

    除了其他,fiddler这个工具能够让你看到浏览器发送的异步请求。事实上,你不仅可以被动的做为这些请求的看客,还能主动出击修改和重新发送它们。AJAX请求这么容易被蒙,可着实让那些计分的在线游戏开发者们郁闷的了。(当然,可别那样骗人家~)

    Facebook聊天功能提供了关于AJAX一个有意思的问题案例:把数据从服务器端推送到客户端。因为HTTP是一个请求-响应协议,所以聊天服务器不能把新消息发给客户。取而代之的是客户端不得不隔几秒就轮询下服务器端看自己有没有新消息。

    这些情况发生时长轮询是个减轻服务器负载挺有趣的技术。如果当被轮询时服务器没有新消息,它就不理这个客户端。而当尚未超时的情况下收到了该客户的新消息,服务器就会找到未完成的请求,把新消息做为响应返回给客户端。

    转载于:https://www.cnblogs.com/liuna/p/7225480.html

    展开全文
  • 首先,你得在浏览器里输入要网址: 例如百度或者facebook。 第二步 浏览器查找域名的IP地址(域名就是指输入的网址) 浏览器缓存 – 浏览器会缓存DNS记录一段时间。 有趣的是,操作系统没有告诉浏览器储存DNS记录的...
  • Pyodide是Mozilla的一个实验性项目,用于创建一个完全在浏览器中运行的完整的Python数据科学技术栈。 Pyodide的动机来自于Mozilla的另一个项目Iodide的工作,早先的一个博客中我们介绍了它。Iodide是一个基于...
  • chrome浏览器

    万次阅读 2014-08-18 21:51:29
    http://blog.csdn.net/pipisorry/article/details/37728839d谷歌浏览器相关设置谷歌... 鼠标中键单击标签谷歌浏览器点击书签新标签页打开1. 安装拓展程序: chrookmarks \ Bookmarks list from context menu \ ne
  • 3. 浏览器根据IP地址与目标web服务器80端口上建立TCP连接4. 浏览器获取请求页面的html代码。5. 浏览器在显示窗口内渲染HTML。6. 窗口关闭时,浏览器终止与服务器的连接。 这其中最有趣的是第1步和第2步(域名...
  • 浏览器 内核

    千次阅读 2010-10-27 17:18:00
    浏览器可以分为两部分,shell+内核。其中shell的种类相对比较多,内核则比较少。Shell是指浏览器的外壳:例如菜单,工具栏等。主要是提供给用户界面操作,参数设置等等。它是调用内核来实现各种功能的。内核才是...
  • 浏览器集成教学 自定义浏览器

    万次阅读 2007-09-18 10:44:00
    来源:互联网 作者:我要购书网信息中心 发布:我要购物网收集整理 发布时间:2006-8-31 人气:1417 自定义浏览器 本教
  • 浏览器劫持

    千次阅读 2009-03-05 15:09:00
    为什么说“浏览器劫持”...BHO是微软早1999年推出的作为浏览器对第三方程序员开放交互接口的业界标准,它是一种可以让程序员使用简单代码进入浏览器领域的“交互接口”(INTERACTIVED Interface)。通过BHO接口,第三
  • 这篇文章旨在尽可能详细的解释一个经典的面试问题“当你在浏览器的地址栏键入’google.com’并按下enter键,会发生什么” 当你键盘上按下‘g’ 接下来的几节会解释所有有关键盘输入和操作系统中断的东西。但是...
  • Unity Web自适应浏览器

    千次阅读 2015-07-20 16:33:40
    unity web的自适应浏览器比我想象中要更简单,但是这里也只有更改最简单的东西实现了自适应,完全忽略unity web发布时定义的大小。 1.记事本打开html,将config里的设置改为:width:'100%',height:'100%' 2.将...
  • android 浏览器

    万次阅读 2012-06-15 13:45:44
    Android 4.0 Browser增加了表单自动填充功能,比较了一下UC、QQ、Opera、海豚浏览器等,都没有提供此项功能。问了很多人,也没人用过,所以就上网收集了相关资料。 先看看维基百科关于autofill词条的解释吧: ...
  • idea或者eclipse中修改代然后发布在浏览器中怎么刷新都没有用。 只需network中将disable cache勾上即可
  • 文章导读:一个不起眼的网站中有这么一句话:“未来10年间的代码中,JavaScript将成为浏览器战争的第二纪元中的一个关键战场”。JavaScript让开发者创建一切东西从站点菜单到在线程序。 JavaScript90年代中期...
  • 作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些...1. 首先,你得在浏览器里输入要网址: 2. 浏览器查找域名的IP地址 导航的第一步是通过访问的域名找出其IP地址。
  • 【综合篇】浏览器的工作原理:浏览器幕后揭秘

    千次阅读 多人点赞 2020-01-21 18:18:13
    web(给达达前端加星标,提升前端技能)了解浏览器是如何工作的,能够让你站更高的角度去理解前端浏览器的发展历程的三大路线,第一是应用程序web化,第二是web应用移动化,第三是web操...
  • tor 和tor浏览器Surf with anonymity using the Tor browser. Here’s how to install Tor on a Linux desktop. Ubuntu users beware: The Tor project recommends not installing Tor from Ubuntu’s regular ...
  • 前言:  浏览器是一个软件,专门用来显示网页服务器或文件系统的 HTML文件内容的,并可以让用户与这些html文件交互。 ... 那么,  1.html,js 和 css 是怎么被浏览器... 3.chrome 花了9年占有浏览器2/3的市场,又是...
  • 浏览器内核揭秘

    2015-05-13 10:56:30
    目前浏览器产品繁多,网上经常有文章对各类浏览器进行比较,其中常常被提及的一个重要指标就是“浏览器内核”,究竟什么是内核呢? 此外,双核浏览器近几年来异军突起,迅速占领了大片市场份额,那么什么是双核...
  • MT浏览器

    千次阅读 2010-11-05 11:57:00
    大二进入CMSware实习,一待就是半年,从创始人之一Easyt身上学到了一些技术之外的东西。因此也对MT这个使用了两年的产品有一点自己的思考。一个新产品切入市场,本身有一个清晰的盈利模式是非常重要的,其次才...
  • 最近看到一个题目,**当在浏览器中输入一个url后回车,后台发生了什么?**比如输入url后,你看到了百度的首页,那么这一切是如何发生的呢? 网上各种的说法,不外乎都是这样的: 第一步:客户机提出域名解析请求,并...
  • 作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:...1. 首先嘛,你得在浏览器里输入要网址: &lt;img src="https://pic4.zhimg.com/5d495eb96b
  • 浏览器缓存机制

    2014-04-21 20:14:59
    浏览器缓存机制 浏览器缓存机制,其实主要就是HTTP协议定义的缓存机制(如: Expires; Cache-control等)。但是也有非HTTP协议定义的缓存机制,如使用HTML Meta 标签,Web开发者可以HTML页面的节点中加入...
  • 1. 首先在浏览器里输入要网址: 2. 浏览器查找域名的IP地址 导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下: 浏览器缓存 – 浏览器会缓存DNS...
  • 关于浏览器的内核

    千次阅读 2018-11-04 18:04:21
    前言 有些时候看某些网课,访问某些网站或者在线缴费系统时候会提示“使用某某浏览器访问最佳”...外壳:面向用户的界面,通俗的讲就是打开浏览器我们真切看到的东西。 内核:负责对网页语法的解释(如HTML、JavaSc...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 90,317
精华内容 36,126
关键字:

怎么在浏览器发布东西