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),一個開發人員的家,來訴說本身的故事。

相關文章
相關標籤/搜索