文档章节

webkit浏览器常见开发问题

lonely1986
 lonely1986
发布于 2015/04/15 21:32
字数 1041
阅读 98
收藏 0

前段时间有人问我一个简单的问题,html如何创建解析的? 

我讲了一大堆,什么通过DocumentLoader, CachedResourceLoader,

CacheResource, ResourceLoaderScheduler, ResourceHandle这些类。

一步一步的完成cache查找然后请求下载等等。 

滔滔不绝,直到我调试xml解析时,我才发现好多问题都与理解的不一致,

在分析源码的时候只了解了大体步骤。细节你真的清楚吗?

一、HTTP header 网页头请求

Requests部分(列举几个重要的)

Accept

指定客户端能够接收的内容类型

Accept: text/plain, text/html

Accept-Charset

浏览器可以接受的字符编码集。

Accept-Charset: iso-8859-5

Accept-Encoding

指定浏览器可以支持的web服务器返回内容压缩编码类型。

Accept-Encoding: compress, gzip

Accept-Language

浏览器可接受的语言

Accept-Language: en,zh

Connection

表示是否需要持久连接。(HTTP 1.1默认进行持久连接)

Connection: close

Cookie

HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。

Cookie: $Version=1; Skin=new;

Content-Length

请求的内容长度

Content-Length: 537

Content-Type

请求的与实体对应的MIME信息

Content-Type: application/x-www-form-urlencoded

Date

请求发送的日期和时间

Date: Tue, 15 Mar 2015 15:12:31 GMT

User-Agent

User-Agent的内容包含发出请求的用户信息

User-Agent: Mozilla/5.0 (Linux; X11)

Responses 部分

Accept-Ranges

表明服务器是否支持指定范围请求及哪种类型的分段请求

Accept-Ranges: bytes

Age

从原始服务器到代理缓存形成的估算时间(以秒计,非负)

Age: 12

Allow

对某网络资源的有效的请求行为,不允许则返回405

Allow: GET, HEAD

Cache-Control

告诉所有的缓存机制是否可以缓存及哪种类型

Cache-Control: no-cache

Content-Encoding

web服务器支持的返回内容压缩编码类型。

Content-Encoding: gzip

Content-Language

响应体的语言

Content-Language: en,zh

Content-Length

响应体的长度

Content-Length: 348

Content-Location

请求资源可替代的备用的另一地址

Content-Location: /index.htm

Content-MD5

返回资源的MD5校验值

Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==

Content-Range

在整个返回体中本部分的字节位置

Content-Range: bytes 21010-47021/47022

Content-Type

返回内容的MIME类型

Content-Type: text/html; charset=utf-8

Date

原始服务器消息发出的时间

Date: Tue, 15 Mar 2015 15:12:31 GMT

Location

用来重定向接收方到非请求URL的位置来完成请求或标识新的资源

Location: http://www.oschina.net/u/2335812/admin


User-Agent这个字段用户信息,表明你浏览器支持标准,服务器会解析该字段返回不同请求

(一个适配多终端的网页会做兼容处理)这点在iptv中要特别注意,

好多时候有些前端网页就是要加些特殊字段才能正常操作甚是郁闷。

HTTP 请求头里面能传递较多的信息。

二、webkit 如何区分创建html,xml等解析

它是在HTTP请求返回的200 OK中的Content-Type字段决定的,

Content-Type: text/html; charset=utf-8,

说明了text类型html,字符编码utf-8。

在DOMImplementation.cpp 中createDocument()创建时判断type是否为html,xml,

video等这个type就是请求返回OK字段中的Content-Type解析出来的。

三、请求重定向

重定向是在HTTP请求返回的302 Found的Location字段返回的url决定跳转的新地址

四、设置load缓存大小

在loader/cache/MemoryCache.cpp 文件中setCapacities() 函数可以设置缓存大小,

找到一个资源加载速度于内存使用的平衡点


类似的小细节有很多,大家也可以诉说一下你遇到的问题。

感谢您的阅读,期待下次与您见面:

如果对这篇讲的技术有任何疑问及想要获得这篇文章讲的技术的工具,第一时间获得文章更新,每天发布一篇技术大牛的原创文章,更多技术信息分享

欢迎关注个人微信公众平台:程序员互动联盟,扫一扫下方二维码或搜索微信号coder_online即可关注,在线帮您解决技术难点,给大牛直接出难题。


本文转载自:

共有 人打赏支持
lonely1986
粉丝 110
博文 34
码字总数 8686
作品 0
海淀
私信 提问
WebKit 是浏览器引擎的 jQuery

最新 消息,Opera决定所有旗下浏览器(包括桌面和移动版)使用WebKit引擎(就是Chromium)。我看见许多人在Twitter上咬牙切齿。我想我可以回答这个问题,因为现在的情况和2008-2009年一样。然...

oschina
2013/02/15
3.8K
9
三大浏览器采用WebKit: 有望打造新苹果帝国

导语:美国新闻聚合网站BuzzFeed编辑约翰·赫尔曼(John Herrman)周三撰文称,Opera改用WebKit渲染引擎后,全球浏览器市场将由WebKit所主导。最终,微软也别无他选。 以下为文章主要内容: 作...

oschina
2013/02/15
5.2K
24
Webkit 很酷,但并非一统天下者

分裂严重的移动市场 长期以来,如同瘟疫一般感染移动产业的分裂现象越来越严重,这一事实已不是秘密。 根据来自Gartner的最新数据,Symbian 仍然是第一大移动设备操作系统,但是仅仅占据了百...

红薯
2010/05/29
2.8K
4
屏蔽Chrome(webkit)中的input、textarea的默认点击/聚焦高亮的样式

WebKit作为一个开源的浏览器引擎,而且有google及苹果的大力推广,应该将来的市场占有的份额应该不错。 同时苹果和google推出的相关智能手机也会用到webkit内核的mini浏览器。 这两款webkit引...

The-Start
2013/12/02
0
0
开源引擎Webkit 引发浏览器格局变化

几乎一夜之间,原本采用IE核心的国产浏览器纷纷上马双核心,也让Webkit这 个本不为大众熟知的技术术语走向前台。国产浏览器为何青睐Webkit?Webkit又会为竞争激烈的浏览器市场带来什么样的变...

红薯
2010/04/28
1K
6

没有更多内容

加载失败,请刷新页面

加载更多

makefile 常用函数

Linux 环境下的程序员如果不会使用GNU make来构建和管理自己的工程,应该不能算是一个合格的专业程序员,至少不能称得上是 Unix程序员。今天我们来学习下makefile的常用函数。 《GNU make》h...

科陆李明
17分钟前
3
0
Android 报错 Could not find com.android.tools.build:aapt2:3.2.1-4818971.

报错信息: Could not find com.android.tools.build:aapt2:3.2.1-4818971.Searched in the following locations: file:/C:/Users/96110/AppData/Local/Android/Sdk/extras/m2reposito......

lanyu96
29分钟前
1
0
我的Linux系统九阴真经

我的Linux系统九阴真经 在今天,互联网的迅猛发展,科技技术也日新月异,各种编程技术也如雨后春笋一样,冒出尖来了。各种创业公司也百花齐放百家争鸣,特别是针对服务行业,新型互联网服务行...

linuxCool
今天
21
0
Python程序员需要知道的30个技巧

1 直接交换两个数字位置 1x, y = 10, 202print(x, y)3x, y = y, x4print(x, y)5#1 (10, 20)6#2 (20, 10) 2 比较运算符的链接 1n = 102result = 1 < n < 203print(result)4# True5result = 1 ......

糖宝lsh
今天
12
0
[LintCode] Linked List Cycle(带环链表)

描述 给定一个链表,判断它是否有环。 样例 给出 -21->10->4->5, tail connects to node index 1,返回 true。 这里解释下,题目的意思,在英文原题中,tail connects to node index 1 表示的...

honeymose
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部