前段时间有人问我一个简单的问题,html如何建立解析的? 我讲了一大堆,什么经过DocumentLoader, CachedResourceLoader, CacheResource, ResourceLoaderScheduler, ResourceHandle这些类一步一步的完成cache查找而后请求下载等等。 html
口若悬河,直到我调试xml解析时,我才发现好多问题都与理解的不一致,在分析源码的时候只了解了大致步骤。细节你真的清楚吗? 前端
1、HTTP header 网页头请求 程序员
列举几个重要的 web
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),一个开发人员的家,来诉说本身的故事。