webkit浏览器常见开发问题

阅读:401 2019-03-19 14:40:10 来源:开源中国

前段时间有人问我一个简单的问题,html如何创建解析的?我讲了一大堆,什么通过documentloader,cachedresourceloader,cacheresource,resourceloaderscheduler,resourcehandle这些类一步一步的完成cache查找然后请求下载等等。

滔滔不绝,直到我调试xml解析时,我才发现好多问题都与理解的不一致,在分析源码的时候只了解了大体步骤。细节你真的清楚吗?

一、httpheader网页头请求

列举几个重要的

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

表示是否需要持久连接。(http1.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,15mar201515:12:31gmt

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:bytes21010-47021/47022

content-type

返回内容的mime类型

content-type:text/html;charset=utf-8

date

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

date:tue,15mar201515:12:31gmt

location

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

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

user-agent这个字段用户信息,表明你浏览器支持标准,服务器会解析该字段返回不同请求(一个适配多终端的网页会做兼容处理)这点在iptv中要特别注意,好多时候有些前端网页就是要加些特殊字段才能正常操作甚是郁闷。http请求头里面能传送较多的信息

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

它是在http请求返回的200ok中的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请求返回的302found的location字段返回的url决定跳转的新地址

四、设置load缓存大小

在loader/cache/memorycache.cpp文件中setcapacities()函数可以设置缓存大小,找到一个资源加载速度与内存使用的平衡点

这样的细节还有很多,大家也可以诉说一下您遇到的问题

相关文章
{{ v.title }}
{{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
你可能感兴趣
推荐阅读 更多>
推荐商标

{{ v.name }}

{{ v.cls }}类

立即购买 联系客服