• webkit浏览器常见开发问题


    前段时间有人问我一个简单的问题,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),一个开发人员的家,来诉说自己的故事。

  • 相关阅读:
    WPF中用户控件对比自定义控件(UserControl VS CustomControl) upcode
    WinCE7开发过程 upcode
    App/Shell启动过程 upcode
    WinCE启动过程 upcode
    ASP.NET 4.0验证请求 A potentially dangerous Request.Form value was detected from the client
    HTML5 开发工具推荐
    用.NET部署卸载window服务
    C#去除HTML标签方法
    正在中止线程 的问题解决
    【转载】纯CSS画的基本图形(矩形、圆形、三角形、多边形、爱心、八卦等)
  • 原文地址:https://www.cnblogs.com/haomcu/p/4430602.html
Copyright © 2020-2023  润新知