前段时间有人问我一个简单的问题,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),一个开发人员的家,来诉说自己的故事。
相关推荐
本文档将讨论iOS中的第三方开发浏览器是如何开发出来的。内容将包含UIWebView的主要能力和限制,浏览器开发者会添加的常见功能,以及会导致存在安全漏洞的常见设计与编程缺陷。作者还将介绍Mobile Safari和UIWebView...
浏览器的兼容性无非还是样式兼容性(css),交互兼容性(javascript),浏览器 hack 三个方面。 样式兼容性(css)方面 (1) 因为历史原因,不同的浏览器样式存在差异,...在开发过程中我们一般通过IDE开发插件、cs
这是一个使用Objective-C语言...项目充分利用了WebKit框架,让应用能够展示丰富的网页内容,同时还实现了诸如前进、后退、刷新、停止等浏览器常见功能。用户可以在应用内自由地浏览网页,就像在使用一个完整的浏览器一样。
• 集成的浏览器 基于开源的WebKit 引擎 • 优化的图形库 包括定制的2D图形库,3D图形库基于OpenGL ES 1.0 (硬件加速可选) • SQLite 用作结构化的数据存储 • 多媒体支持 包括常见的音频、视频和静态图像格式 ...
(1)针对多窗口类浏览器模式问题,指出并分析了该问题存在的原因,利用Activity的运行机制,通过Fragment栈对主要模块的Webview进行管理,实现对不同模块之间切换的控制。 (2)针对跨域数据交互问题,指出并分析了...
内部集成浏览器:该浏览器基于开源的WebKit 引擎 优化的图形库:包括2D 和3D 图形库,3D 图形库基于OpenGL ES 1.0 (硬件加速可选) SQLite:用作结构化的数据存储 多媒体支持:包括常见的音频、视频和静态印象文件...
· 集成的浏览器 基于开源的WebKit 引擎 · 优化的图形库 包括定制的2D图形库,3D图形库基于OpenGL ES 1.0 (硬件加速可选) · SQLite 用作结构化的数据存储 · 多媒体支持 包括常见的音频、视频和静态图像格式 ...
集成的浏览器 基于开源的 WebKit 引擎 优化的图形机制 自定义的 2D 图形库,基于 OpenGL ES 1。 0 规范的 3D图形实现(本 项硬件加速器可选 SQLite 轻量级的数据库,支持结构化数据的存储 媒体支持 面向...
· 集成的浏览器基于开源的WebKit 引擎 · 优化的图形库包括定制的2D图形库,3D图形库基于OpenGL ES 1.0 (硬件加速可选) · SQLite 用作结构化的数据存储 · 多媒体支持包括常见的音频、视频和静态图像格式(如...
· 集成的浏览器基于开源的WebKit 引擎 · 优化的图形库包括定制的2D图形库,3D图形库基于OpenGL ES 1.0 (硬件加速可选) · SQLite 用作结构化的数据存储 · 多媒体支持包括常见的音频、视频和静态图像格式(如...
集成的浏览器基于开源的WebKit 引擎 ; 优化的图形库包括定制的2D 图形库,3D 图形库基于OpenGL ES 1.0 (硬件加速可选) ; SQLite 用作结构化的数据存储 ; 多媒体支持包括常见的音频、视频和静态图像格式(如MPEG4,...
• 集成的浏览器 基于开源的 WebKit 引擎 • 优化的图形库 包括定制的2D 图形库,3D 图形库基于 OpenGL ES 1.0 (硬件加速可选) • SQLite SQLite SQLite SQLite 用作结构化的数据存储 • 多媒体支持 包括常见的...
本章主要介绍 Android 系统用户态软件中内存破坏漏洞的利用方法。我们会在 ARM 架构上讨论常见的漏洞类型,例如栈溢出。...最后以 WebKit 浏览器引擎中一个可远程利用的漏洞为例,介绍高级堆利用技术。
• 集成的浏览器 基于开源的 WebKit 引擎 • 优化的图形库 包括定制的 2D 图形库, 3D 图形库基于 OpenGL ES 1.0 (硬件加速可选) • SQLite SQLite SQLite SQLite 用作结构化的数据存储 • 多媒体支持 包括常见的...
集成的浏览器 基于开源的WebKit 引擎 优化的图形库 包括定制的2D图形库,3D图形库基于OpenGL ES 1.0 (硬件加速可选) SQLite 用作结构化的数据存储 多媒体支持 包括常见的音频、视频和静态图像格式 (如 MPEG4, ...
Android 包括一个构建在 WebKit 基础上的可嵌入浏览器,iPhone 的 Mobile Safari 浏览器同样也是以 WebKit 为基础。 Android 提供多种连接选项,包括 WiFi、蓝牙和通过蜂窝(cellular)连接的无线数据传输(例如 ...
3.2.4 解决常见问题29 3.3 实现“iphone优化的”网页31 3.3.1 通过user_agent检测iphone31 3.3.2 通过css检测iphone31 3.3.3 使用css进行优化32 3.4 使用iphone chrome32 3.4.1 三个栏32 3.4.2 web...
集成的浏览器 基于开源的WebKit 引擎 优化的图形库 包括定制的2D图形库,3D图形库基于OpenGL ES 1.0 (硬件加速可选) SQLite 用作结构化的数据存储 多媒体支持 包括常见的音频、视频和静态图像格式 (如 MPEG4, ...
集成的浏览器 基于开源的WebKit 引擎 优化的图形库 包括定制的2D图形库,3D图形库基于OpenGL ES 1.0 (硬件加速可选) SQLite 用作结构化的数据存储 多媒体支持 包括常见的音频、视频和静态图像格式 ...
• 集成的浏览器 基于开源的 WebKit 引擎 • 优化的图形库 包括定制的 2D 图形库,3D 图形库基于 OpenGL ES 1.0 (硬件加速可选) • SQLite 用作结构化的数据存储 • 多媒体支持 包括常见的音频、视频和静态...