webkit浏览器常见开发问题

前段时间有人问我一个简单的问题,html如何建立解析的? 我讲了一大堆,什么经过DocumentLoader, CachedResourceLoader, CacheResource, ResourceLoaderScheduler, ResourceHandle这些类一步一步的完成cache查找而后请求下载等等。  html

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

1、HTTP header 网页头请求 程序员

列举几个重要的 web

Requests部分

Accept 浏览器

指定客户端可以接收的内容类型 缓存

Accept: text/plain, text/html 服务器

Accept-Charset 微信

浏览器能够接受的字符编码集。 cookie

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 请求头里面能传送较多的信息

2、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解析出来的。

3、请求重定向

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

4、设置load缓存大小

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

这样的细节还有不少,你们也能够诉说一下您遇到的问题

若是你们对本文章有疑问,能够直接在公众号留言,小编第一时间联系原创做者帮你耐心解答。

技术人员都有本身的情怀,深陷其中而不被理解,欢迎关注我的微信公众平台:程序员互动联盟(coder_online),一个开发人员的家,来诉说本身的故事。

相关文章
相关标签/搜索