前段时间有人问我一个简单的问题,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),一个开发人员的家,来诉说自己的故事。
相关推荐
这里,我们将深入探讨一些常见的CSS问题及其解决方案,帮助你更好地理解和掌握这个强大的样式语言。 一、选择器的优先级 CSS选择器的优先级是根据其特异性(specificity)来确定的。ID选择器具有最高优先级,接下来...
2. **使用前缀**:对于某些浏览器特有的CSS特性,使用相应的前缀,如 `-webkit-`、`-moz-`、`-ms-` 和 `-o-`。 3. **条件注释和浏览器检测**:在JavaScript中,可以使用条件注释或检测用户代理字符串来针对特定...
【标题】: 有源医疗器械申报常见问题梳理 在医疗器械行业中,有源医疗器械的申报是一项严谨且复杂的任务,尤其在一系列法规的出台后,如《医疗器械监督管理条例》、《医疗器械注册管理办法》等,申报过程更加规范化...
这些是CSS在IE6和IE7中常见的兼容性问题及其解决方案。随着现代浏览器的普及,这些问题已经逐渐减少,但在维护旧项目或支持旧浏览器时,这些知识仍然非常有用。在实际开发中,使用条件注释、CSS hack(如`*html`,`_...
FPGA问题汇总 FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,通过软件配置来实现数字电路的设计。下面是FPGA开发中常见的一些问题和解决方案: 1. 什么是.scf文件? SCF文件是MAXPLUSII的仿真文件...
文档标题为“web前端5大类型面试题汇总”,文档描述指出这是一份包含了web前端领域中最为常见的五类面试题目的汇总,对于学习web前端的人士有较大的帮助。标签为“前端面试题”,这表明该文档旨在为准备参加前端开发...
常见的盐雾试验类型有四种:中性盐雾试验(NSS)、醋酸盐雾试验(AASS)、铜盐加速醋酸盐雾试验(CASS)和交变盐雾试验。每种试验方法针对不同的测试目标和环境模拟。 1. **中性盐雾试验 (GB/T 2423.17)**:这是最...
这里我们讨论一些常见的面试问题及其解决方案。 **iscroll安卓低版本卡顿的解决方案** 在Android低版本中,iscroll可能会出现卡顿现象。解决这个问题,可以尝试以下几种方案: 1. 使用iscroll的v5.1.3版本,并设置`...
1. **浏览器测试**:面试者应熟悉主流浏览器,如Chrome、Firefox、Safari、Edge和IE,并了解它们的内核差异,如WebKit(Chrome和Safari)、Gecko(Firefox)和Trident(IE)。 2. **DOCTYPE**:DOCTYPE声明用于告知...
Android开发资料汇总高阶 特性 应用程序框架 支持组件的复用和更换 Dalvik 虚拟机 专门为移动设备进行过优化 集成的浏览器 基于开源的 WebKit 引擎 优化的图形机制 自定义的 2D 图形库,基于 OpenGL ES...
这篇综合性的知识汇总将探讨CSS在浏览器中的常见问题、解决方案以及优化策略。 1. **CSS前缀问题** 许多CSS3属性在初期为实验性质,各个浏览器厂商使用了自己的私有前缀,如 `-webkit-` (Chrome, Safari), `-moz-`...
11. 浏览器测试和内核:在进行前端开发时,需要在多个浏览器上测试页面,常见的浏览器内核包括Trident(IE)、Gecko(Firefox)、Webkit(Safari和早期Chrome)、Blink(现代Chrome和Opera)。 12. IE6的BUG及其...
### 前端面试知识点详解 ...以上涵盖了《前端面试汇总》文档中提到的知识点,并进行了详细的解释和扩展。这些知识点对于前端开发者来说非常重要,能够帮助他们在实际项目中更好地理解和运用HTML、CSS等技术。
描述中的“CSS兼容性问题汇总文档”意味着存在一份文档,详细列举了CSS在不同浏览器中遇到的常见兼容性问题以及相应的解决策略。以下是这些问题的详细说明: 1. **浏览器解析差异**:每个浏览器都有自己的内核,如...
"CSS_Hack速查表"是一个非常实用的工具,它汇总了各种CSS Hack,帮助开发者快速解决跨浏览器样式兼容问题。 一、什么是CSS Hack? CSS Hack通常分为三种类型:条件注释Hack、属性前缀Hack和选择器Hack。这些Hack...
以下是从上述内容中提炼出的知识点,详细地对前端工程师可能面临的问题进行了阐述: ...以上知识点覆盖了前端工程师在面试中常见的问题范围,确保了前端开发人员对于前端技术的熟练程度和解决问题的能力。
18. 浏览器内核、兼容性问题与解决方案:掌握浏览器内核及常见的兼容性问题,使用条件注释、CSS Hack、浏览器前缀等方式解决兼容性问题。 19. 浏览器标准模式与怪异模式:了解浏览器的标准模式和怪异模式,以及如何...
本文将详细阐述几种常见的高分子材料检测方法,包括GPC、红外光谱、紫外光谱以及质谱测试。 1. **GPC( Gel Permeation Chromatography)**,也称为凝胶渗透色谱,是一种用于测量高分子分子量及其分布的技术。GPC...
- 浏览器兼容性测试:了解自己设计的页面在不同浏览器(如IE, Firefox, Chrome等)中表现的必要性,以及这些浏览器所基于的内核(如Blink, Gecko, WebKit等)。 - Doctype声明:告诉浏览器使用哪种HTML或XHTML规范...