chenxi的html學習筆記

0.本文主體源自:http://www.cnblogs.com/coco1s/p/4034937.html,有興趣的能夠直接去那裏看,也能夠看看我整理加拓展的。
1.瀏覽器內核:
1.ie:trident(三叉戟)內核
2.firefox:gecko(壁虎)內核
3.safari:webkit(瀏覽器核心)內核
4.opera:之前是presto(急速)內核,如今改用谷歌的blink(閃爍)內核
5.Chorme:blink(基於webkit,谷歌和opera software共同開發)javascript

(附:瀏覽器內核的理解?)
瀏覽器內核分紅兩部分:渲染引擎和js引擎。php

1.渲染引擎:負責取得網頁內容、整理訊息,以及計算網頁的顯示方式,而後輸出至顯示器或打印機。瀏覽器的內核不一樣對於網頁的語法解釋會有不一樣,因此渲染的效果也不相同。全部網頁瀏覽器、電子郵件客戶端以及其餘須要編輯、顯示網絡內容的應用程序都須要內核。
2.js引擎:解析和執行js來實現網頁的動態效果;css

2.對web標準以及w3c的理解與認識
標籤閉合、標籤小寫、不亂嵌套、提升搜索引擎機器人的搜索概率,正確的使用語義化標籤,使用外鏈的css、js腳本,結構表現行爲分離;容易維護,改版方便,不須要變更頁面內容,提供打印版本而不須要複製內容、提升網站的易用性。html

3.xhtml和html有什麼區別
html是一種基本的web網頁設計語言,xhtml是基於xml的標記語言
區別:
xhtml元素必須被正確的嵌套
xhtml元素必須被關閉
標籤名必須使用小寫
xhtml必須擁有根元素前端

(附:xml拓展)
什麼是xml?
xml(extensible markup language)可拓展標記語言,是對超文本標記語言的補充。它是一種用來傳輸和存儲數據的標準,一種獨立於軟件和硬件的信息傳輸工具。一種不一樣設備之間通信協議。
4.Doctype
用於聲明文檔使用哪一種規範(html/xhtml),通常分爲 嚴格(strict)和過分(Transitional)模式,基於框架的html文檔。
Doctype不存在或者格式不正確會致使文檔以兼容模式呈現;html5

(拓展:標準模式和兼容模式的區別?)
標準模式的排版和js運做都是以該瀏覽器支持的最高標準執行。
在兼容模式中,頁面以寬鬆的向後兼容的方式顯示,模擬老式瀏覽器的行爲以防止站點沒法工做。java

(附:html5爲何只須要寫<!DOCTYPE HTML>?)
一、html5不基於SGML(標準通用標記語言/Standard Generalized Markup Language),所以不須要對DTD(文檔類型聲明/Document Type Declaration)進行引用,可是須要doctype來規範瀏覽器的行爲(讓瀏覽器按照他們應該的方式來運行)
二、HTML4.01基於SGML,因此須要對DTD進行引用,才能告知瀏覽器文檔所使用的文檔類型。web

5.什麼是BFC?
BFC (block formatting context塊級格式化上下文)
它是一個獨立的渲染區域,它規定了內部如何佈局,而且與這個區域外部絕不相干
什麼會生成BFC?
根元素:html
float不爲none的浮動框
position爲absolute、fixed
display爲:inline-block,table-cell,flex,table-caption,inline-flex非塊框的塊容器
overflow不爲visible的塊框.
觸發ie的hasLayout特性ajax

(附1:display經常使用屬性拓展)
每一個元素默認都有一個display值,可是都可以被顯式設置重寫。
:none;將元素及其子元素從普通文檔流中移除,如不存在過。
:inline;該元素生成一個或多個行內框,行內級元素所佔的空間就是它的標籤所定義的大小,沒法設置上下margin、padding和寬高。
:block;該元素生成塊級框。全部的塊級元素開始於新的一行,延展到其容器的寬度;
:list-item;元素被渲染爲列表項呈現的方式,確切的說就像是一個塊級元素,可是會生成一個能夠被list-style屬性進行樣式修飾的標記框。
:inline-
block;該元素生成一個塊級別框,可是整個框的行爲就像是一個內聯元素。能夠設置寬高等塊級元素素的屬性。然而ie6並不能識別該屬性,可是使用inline-block在ie下會觸發layout,從而使得內聯元素有了inline-block的表症(設置寬高)。
解決方法:1.div{display:inline-block} // 先觸發layout
div{display:inline} //再設置inline 必須分開成兩步
2.直接設置爲inline,再利用zoom來觸發layout實現相似效果
div{*display:inline;*zoom:1}
(附1.1:zoom)
ie瀏覽器的專有屬性,設置或檢索對象的縮放比例,能夠觸發ie的hasLayout屬性,清除浮動、清除margin的重疊。算法

(附2:ie中的hasLayout屬性摘要)
haslayout是ie瀏覽器渲染引擎的一個內部組成部分,一個元素要麼本身對本身的內容計算大小和組織。要麼依賴於父元素來計算尺寸和組織內容。爲了調節這兩個不一樣的概念,渲染引擎採用了hasLayout的屬性,屬性值能夠爲true或false。當一個元素的hasLayout屬性值爲true時,咱們說這個元素有一個佈局(layout),負責對本身和可能的子孫進行尺寸計算和定位.

6.quirks模式是什麼?它和standards模式有什麼區別?
在ie6以前版本,若是網頁沒有聲明DTD,瀏覽器會向前兼容,採用兼容以前的佈局方式。就是quirks模式,也叫作怪異模式。

區別:
盒模型:在w3c標準中,若是設置一個元素的寬度和高度,指的是元素內容的寬度和高度,而在quirks模式下,ie的寬度和高度還包含了padding和border;

設置行內元素的高寬:在標準模式下,給行內元素設置寬高都不會生效,而在quirks模式下,則會生效,上下margin也會生效。

設置百分比的寬高:在standards模式下,一個元素的寬高是由其包含的內容來決定的;若是父元素沒有設置百分比的寬高,子元素設置一個百分比的寬高是無效的。而怪異模式下,子元素的百分比寬度生效,高度賊怪異(未知解答)。
(附:父元素未設置寬高,子元素百分比寬高ie8如下版本同樣所有生效)

用margin:0 auto;設置水平居中:在標準模式下能夠,而在怪異模式下則不行。

7.什麼是語義化的html?
直觀的認識標籤,讓頁面內容結構化,便於對瀏覽器、搜索引擎解析,爬蟲依賴於標籤來肯定上下文和各個關鍵字的權重,方便其餘設備解析(屏幕閱讀器、盲人閱讀器、移動設備)。在沒有css樣式的時候也能以一種清晰的文檔結構顯示。

8.div+css的佈局較table有什麼優勢?
改版的時候更方便,只須要更改css文件
頁面加載速度更快、結構化清晰、頁面顯示簡潔。
表現與結構相分離
易於優化seo,排名更容易靠前。

9.img的alt和title有何區別?strong與em的區別?
alt屬性能在圖片加載失敗的時候顯示做爲替換文字。
title屬性能夠爲設置該屬性的元素設置說明或建議性的文字,在鼠標移入時顯示。

strong 表示強調內容的重要性,同時它帶有默認樣式加粗的標籤;
em 表示更強烈的內容強調點,帶有默認樣式斜體的標籤。

10.漸進加強和優雅降級之間的不一樣?
漸進加強:首先針對低版本瀏覽器進行構建頁面,保證最基本的功能,而後在針對高級瀏覽器進行效果、交互等改進和追加功能達到更好的用戶體驗。
優雅降級:一開始就構建完整的功能,而後再針對低版本進行兼容。

區別:優雅降級從複雜的狀況開始,並試圖減小用戶體驗的供給,而漸進加強則是從一個很是基礎的可以起做用的版本開始,並不斷擴充,以適應將來環境的須要。降級意味着往回看,而漸進加強意味着朝前看,同時保證其根基處於安全地帶。

 

12.描述一下cookie、sessionStorage和localStorage的區別?
sessionStorage用於本地存儲一個session中的數據,這些數據只有在同一個會話頁面才能訪問而且當會話結束後數據也隨之銷燬。所以sessionStorage不是一種持久化的本地存儲。而localStorage用於持久化的本地存儲,除非主動刪除數據,不然數據是永遠不會過時的。
web storage(包含sessionStorage和localStorage)和cookie的區別:
web storage的概念與cookie類似,區別是它是爲了更大容量存儲設計的。cookie的大小是受限的,而且每次發送請求新頁面的時候cookie都會被髮送過去,這樣無形當中浪費了帶寬,另外cookie還須要指定做用域,不能夠跨域調用。
web storage擁有setItem,getItem,romoveItem,clear等方法,cookie須要開發者本身封裝setCookie,getCookie。
Cookie的做用是與服務器進行交互,做爲HTTP規範的一部分而存在,而web storage僅僅是爲了本地「存儲」數據而生。

13.src與href的區別
src(source)指向外部資源的位置,指向的內容將會嵌入到文檔中當前標籤所在位置;在請求src資源時會將其指向的資源下載並應用到文檔中,如js腳本,img圖片和iframe等元素。
當瀏覽器解析到該元素時,會暫停其餘資源的下載和處理,直到將該資源加載、編譯、執行完畢,相似於將所指向資源嵌入當前標籤內。
href(hypertext reference/超文本引用)指向網絡資源所在位置,創建和當前元素(錨點)或當前文檔(連接)之間的連接,若是咱們在文檔中添加<link href="common.css" rel="stylesheet"/>那麼瀏覽器會識別該文檔爲css文件,就會並行下載資源而且不會中止對當前文檔的處理。這也就是爲何建議使用link方式加載css而不是使用@import方式。

(附1:css引入方式)
1.link
2.@import "style.css";/@import url("style.css")
(官方定義 import規則必定要先於除了@charset的其餘任何css規則)
不建議使用@import的理由:
1.影響瀏覽器的並行下載
2.多個@import致使下載順序紊亂
(附2:詳解爲何要避免使用@import)
若是使用css @import,這樣會致使css沒法並行下載,在使用@import引用的文件只有在引用它的那個css文件被下載、解析以後,瀏覽器纔會知道還有另一個css須要下載,這時纔會去下載,而後下載後開始解析、構建渲染樹(render tree)等一系列操做,所以css @import 引發的css解析延遲會加長頁面留白期。因此,要儘可能避免使用css @import而儘可能採用link標籤的方式引入。
(拓展:link和@import的詳細區別?)
一、link屬於XHTML標籤,除了加載css,還能用於定義RSS,定義rel連接屬性等做用;而@import是CSS提供的,只能用於加載CSS。
二、頁面被加載時,link會並行加載,而@import引用的CSS會等到頁面被加載完再加載(詳細如上。)
三、import是CSS2.1提出的,只在IE5以上才被識別,而linkXHTML標籤無兼容問題;

14.css、js的性能優化,從用戶刷新網頁開始,一次js請求通常狀況下哪些地方會有緩存處理?
dns緩存,cdn緩存,瀏覽器緩存,服務器緩存。
(附:緩存介紹)
DNS(Domain Name System/域名解析系統):
短期內屢次訪問某個網址,系統會設計一個本地「dns緩存」,當第一次訪問chenxixunhan.com,dns返回了正確的ip後,系統就會將這個結果臨時存儲起來,這就是dns緩存。它會有一個失效時間,在這時間內,當再次訪問時,系統會從電腦本地的dns緩存中把結果交還給你,而沒必要再去詢問dns服務器,變相「加速」了網址的解析。
CDN(Content Delivery Network/內容分發網絡)
經過在不一樣地點緩存內容,而後經過負載平衡等技術將用戶請求定向到最近的緩存服務器上獲取內容,提升用戶訪問網站的響應速度。
瀏覽器緩存
爲了節約網絡的資源加速瀏覽,瀏覽器在用戶磁盤上對最近請求過的文檔進行存儲,當訪問者再次請求這個頁面時,瀏覽器就能夠從本地磁盤顯示文檔,這樣就能夠加速頁面的閱覽。
web服務器緩存
Web緩存服務器的應用模式主要是正向代理和反向代理。正向代理(Proxy)模式是代理網絡用戶訪問internet,客戶端將原本要直接發送到internet上源服務器的鏈接請求發送給代理服務器處理。正向代理的目的是加速用戶在使用瀏覽器訪問Internet時的請求響應時間,並提升廣域網線路的利用率。正向代理瀏覽器無需和該站點創建聯繫,只訪問到Web緩存便可。經過正向代理,大大提升了後續用戶的訪問速度,使他們無需再穿越Internet,只要從本地Web緩存就能夠獲取所須要的信息,避免了帶寬問題,同時能夠大量減小重複請求在網絡上的傳輸,從而下降網絡流量,節省資費。
反向代理(Reverse Proxy)模式是針對Web服務器加速功能的,在該模式中,緩存服務器放置在web應用服務器的前面,當用戶訪問web應用服務器的時候,首先通過緩存服務器,並將用戶的請求和應用服務器應答的內容寫入緩存服務器中,從而爲後續用戶的訪問提供更快的響應。


15.頁面大量圖片,如何優化加載,優化用戶體驗?
一、圖片懶加載。在頁面的未可視區域添加一個滾動事件,判斷圖片位置與瀏覽器頂端的距離與頁面的距離,若是前者小於後者,優先加載。
二、若是爲幻燈片、相冊等,可使用圖片預加載技術,將當前展現圖片的前一張和後一張優先下載。
三、若是圖片爲css圖片,可使用CSSsprite,SVGsprite等技術。
四、若是圖片過大,可使用特殊編碼的圖片,加載時會先加載一張壓縮的特別厲害的縮略圖,以提升用戶體驗。
五、若是圖片展現區域小於圖片的真實大小,應在服務器端根據業務須要先進行圖片壓縮,圖片壓縮後大小與展現一致。

16.之前端的角度出發作好SEO(Search Engine Optimization/搜索引擎優化)須要考慮什麼?
一、瞭解搜索引擎如何抓取網頁和如何索引網頁。
二、meta標籤優化
包括主題(title),網站描述(description),和關鍵字(keywords)。還有其它的隱藏文字如author(做者),category(目錄),language(編碼語種)等。
(拓展:meta?(元信息/meta-information))
meta元素可提供有關頁面的元信息,如針對搜索引擎和更新頻度的描述。
位於文檔頭部,一種輔助性的標籤(詳細:https://zhidao.baidu.com/question/2052283721385566387.html)

三、如何選取關鍵詞並在網頁中放置關鍵詞
搜索就得用關鍵詞。關鍵詞分析和選擇是SEO最重要的工做之一。首先給網站肯定關鍵詞(通常在5個上下),而後針對這些關鍵字進行優化,包括關鍵詞密度(Density),相關度(Relavacy),突出性(Prominency)等等。
四、瞭解主要的搜索引擎
對網站流量主要起決定做用的幾個。
英文:Google,Yahoo,Bing等;
中文:百度,搜狗,有道等。
不一樣的搜索引擎對頁面的抓取和索引、排序的規則都不同。各搜索門戶和搜索引擎的關係。
五、主要的互聯網目錄。
六、按點擊付費的搜索引擎
七、搜索引擎登陸
八、連接交換和連接普遍度
九、合理的標籤使用(詳細連接http://www.jb51.net/css/238279.html 第十六點)


17.html5的新特性?處理html5標籤的瀏覽器兼容問題?
htm5如今已經不是SGML的子集,主要關於圖像、位置、存儲,多任務等功能的增長;
1.繪畫canvas;
2.用於媒介回放的video和audio
3.本地離線存儲localStorage長期存儲數據,瀏覽器關閉後數據不丟失。
4.sessionStorage的數據在瀏覽器關閉後自動刪除;
5.語義化更好的內容元素,如article、footer、header、nav、section
6.表單控件,calendar、date、time、email、url、search;
7.新的計數webworker(多線程),websocket(雙向通訊),geolocation(地理定位);(新的理解)

兼容性:
1.ie6~ie8支持經過document.createElement方法產生的標籤,利用這一特性讓這些瀏覽支持html5新標籤,並須要添加默認樣式。
2. 使用成熟的框架如:html5shiv;
<!--[if lt IE 9]>
<script> src="http://html5shim.googlecode.com/svn/trunk/html5.js"</script>
<![endif]-->

1八、從輸入url到網頁最終展示到用戶面前,中間發生了什麼?
一、輸入地址
二、瀏覽器查找域名的ip地址
(包括dns查找:瀏覽器緩存->系統緩存->路由器緩存)
dns查找過程以下:
一、瀏覽器緩存——瀏覽器會緩存dns記錄一段時間,可是操做系統不會告訴瀏覽器存儲dns的記錄事件,因此不一樣瀏覽器會自固定一個時間(2~30分鐘);
二、系統緩存——若是在瀏覽器緩存裏沒有找到須要的記錄,瀏覽器會作一個系統調用,以便得到系統緩存中的記錄;
三、路由器緩存——接着,請求發向路由器,它通常會有本身的dns緩存;
四、ISP(網絡服務提供商)DNS緩存——接下來檢查ISP緩存DNS的服務器。這裏通常能找到相應的緩存記錄。
五、遞歸搜索——ISP的DNS服務器從根域名服務器開始進行遞歸搜索,從com頂級域名服務器到example的域名服務器。
三、瀏覽器給web服務器發送一個HTTP請求
請求中可能包含存儲該域名的cookies,也會存儲登陸用戶名和密碼以及一些用戶設置等。
四、HTTP(超文本傳輸協議)請求的創建
創建TCP(傳輸控制協議)連接:在HTTP工做開始以前,web瀏覽器首先要經過網絡與web服務器創建鏈接,該鏈接經過TCP來完成的,該協議與IP協議共同構建Internet,即著名的TCP/IP協議族,所以Internet又被稱做是TCP/IP網絡。HTTP是比TCP更高層的應用層協議。根據規則只有低層協議創建以後,才能進行更高層協議的鏈接。所以,首先要創建TCP連接,通常TCP連接的端口號是80。在TCP/IP協議中,TCP協議提供可靠的鏈接服務,採用三次握手創建一個鏈接。
第一次握手:主機A發送位碼syn=1,隨機產生seq(sequence序列號) number=1234567的數據包到服務器,主機B由syn=1知道,A要求創建聯機;
第二次握手:主機B收到請求後確認聯機信息,向A發送ack(Acknowledgement 確認信息) number=(主機A的seq+1),syn=1,ack=1.隨機產生seq=7654321的包;
第三次握手:主機A收到後檢查ack number是否正確,即第一次發送的seq number+1,以及位碼syn是否爲1,若正確,主機A會再發送ack number=(主機B的seq+1),ack=1;主機B收到後確認seq值與ack=1則連接創建成功。
完成三次握手,主機A與主機B開始傳送數據。
一旦創建了TCP鏈接,web瀏覽器就會向web服務器發送請求命令。
瀏覽器發送其求命令以後,還要以頭信息的形式向web服務器發送一些別的信息,以後瀏覽器發送一空白行來通知服務器,它已經結束了該頭信息的發送。
五、服務器的永久重定向響應
服務器給瀏覽器響應一個301永久重定向響應,這樣瀏覽器就會訪問「http://www.chenxixunhan.com/」而非"http://chenxixunhan.com/"。
爲何要重定向而不直接發回用戶想看到的網頁內容?
其中一個緣由跟搜索引擎排名相關。
若是一個頁面有兩個地址,就像「http://www.chenxixunhan.com/」和"http://chenxixunhan.com/",搜索引擎會認爲他們是兩個網站,結果形成每個的搜索連接都減小從而下降排名。而搜索引擎知道301永久重定向,會把訪問帶www的和不帶www的地址歸到同一個網站排名下。
還有一個緣由是用不一樣的地址會形成緩存友好性變差。當一個頁面有好幾個名字時,它可能會在緩存裏出現好幾回。
HTTP/1.1 301 Moved Permanently
Cache-Control: private, no-store, no-cache, must-revalidate, post-check=0,
pre-check=0
Expires: Sat, 01 Jan 2000 00:00:00 GMT
Location: HTTP://www.facebook.com/
P3P: CP=」DSP LAW」
Pragma: no-cache
Set-Cookie: made_write_conn=deleted; expires=Thu, 12-Feb-2009 05:09:50 GMT;
path=/; domain=.facebook.com; httponly
Content-Type: text/html; charset=utf-8
X-Cnection: close
Date: Fri, 12 Feb 2010 05:09:51 GMT
Content-Length: 0
六、瀏覽器跟蹤重定向地址
如今,瀏覽器知道了「http://www.chenxixunhan.com/」纔是要訪問的正確地址,因此它會發送另外一個獲取請求也就是
GET HTTP://www.facebook.com/ HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, [...]Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...]Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Cookie: lsd=XW[...]; c_user=21[...]; x-referer=[...]Host: www.facebook.com
頭信息以以前請求中的意義相同;
七、服務器「處理」請求
服務器接收到獲取請求,而後處理返回一個響應。
八、服務器發回一個HTML響應
HTTP/1.1 200 OKCache-Control: private, no-store, no-cache, must-revalidate, post-check=0,pre-check=0Expires: Sat, 01 Jan 2000 00:00:00 GMTP3P: CP=」DSP LAW」Pragma: no-cacheContent-Encoding: gzipContent-Type: text/html; charset=utf-8X-Cnection: closeTransfer-Encoding: chunkedDate: Fri, 12 Feb 2010 09:05:55 GMT 2b3Tn@[...]整個響應大小爲35kB,其中大部分在整理後以blob(二進制)類型傳輸。
內容編碼頭告訴瀏覽器整個響應體用gzip算法進行壓縮。解壓blob塊後,你能夠看到html文檔。
關於壓縮,頭信息說明了是否緩存這個頁面,若是緩存的話如何去作,有什麼cookies要去設置(前面響應沒有這點)和隱私信息等等。
注意:報頭中把Content-type設置爲「text/html」。報頭讓瀏覽器將該響應內容以HTML形式呈現,而不是以文件格式下載它。瀏覽器會根據報頭信息決定如何解釋該響應,不過同時也會考慮像URL擴展內容等其餘因素。
九、瀏覽器開始顯示HTML
在瀏覽器沒有完整接受所有HTML文檔時,它就開始顯示這個頁面了。
十、瀏覽器發送獲取嵌入在HTML中的對象
在瀏覽器顯示HTML時,它會注意到須要獲取其它地址內容的標籤。這時,瀏覽器會發送一個獲取請求來從新得到這些文件。
下面幾個是一個叫雷鋒的做者訪問facebook.com時須要重獲取的幾個URL
* 圖片
HTTP://static.ak.fbcdn.net/rsrc.php/z12E0/hash/8q2anwu7.gif
HTTP://static.ak.fbcdn.net/rsrc.php/zBS5C/hash/7hwy7at6.gif
…* CSS 式樣表
HTTP://static.ak.fbcdn.net/rsrc.php/z448Z/hash/2plh8s4n.css
HTTP://static.ak.fbcdn.net/rsrc.php/zANE1/hash/cvtutcee.css
…* JavaScript 文件
HTTP://static.ak.fbcdn.net/rsrc.php/zEMOA/hash/c8yzb6ub.js
HTTP://static.ak.fbcdn.net/rsrc.php/z6R9L/hash/cq2lgbs8.js

這些地址都要經歷一個和HTML讀取相似的過程。因此瀏覽器會在DNS查找這些域名,發送請求,重定向等等。
但不像動態頁面那樣,靜態文件會容許瀏覽器對其進行緩存。有的文件可能不須要與服務器通信,而從緩存中直接讀取。服務器的相應中包含了靜態文件保存的期限信息,因此瀏覽器知道要把它們緩存多長時間。還有,每一個響應度可能包含像版本號同樣的ETag(電子標籤)頭(被請求變量的實體值),若是瀏覽器觀察到文件的版本ETag信息已經存在,就立刻中止這個文件的傳輸。
十一、瀏覽器發送異步(Ajax)請求
在web2.0偉大精神的指引下(。。。騷貨),頁面顯示完成後客戶仍與服務器端保持着聯繫。
以Facebook聊天功能爲例,它會持續與服務器保持聯繫來及時更新你那寫亮亮灰灰的好友狀態。
爲了更新這些頭像亮着的好友狀態,在瀏覽器中執行的javascript代碼服務器發送異步請求。這個異步請求發送給特定的地址,它是一個按照程式構造的獲取或發送請求。
facebook聊天功能提供了關於ajax一個有意思的問題案例:把數據從服務器端推送到客戶端,由於HTTP是一個請求-響應協議,因此聊天服務器不能把新消息發給客戶。取而代之的是客戶端不得不隔幾秒就輪詢下服務器端看本身有沒有新消息。
這些狀況發生時長輪詢是個減輕服務器負載挺有趣的技術。若是當被輪詢時服務器沒有新消息,它就不理這個客戶端。而當還沒有超時的狀況下收到了該客戶的新消息,服務器就會找到未完成的請求,把新消息做爲響應返回給客戶端。
(我擦,你可真是個磨人的小妖精,真尼瑪能搞,源自:http://www.qdfuns.com/notes/15102/a5bee6b87d22ab0ecb28101f385db2e4.html)

(拓展:請求url響應返回狀態代碼及其文本描述?(詳情:D:\notes_web_book\HTTP協議詳解.pdf))
狀態代碼由三位數字組成,第一個數字定義了響應的類別,且有五種可能取值:
1xx:指示信息--表示請求已接收,繼續處理
2xx:成功--表示請求已被成功接收、理解、接受
3xx:重定向--要完成請求必須進行更進一步的操做
4xx:客戶端錯誤--請求有語法錯誤或請求沒法實現
5xx:服務器端錯誤--服務器未能實現合法的請求

常見狀態代碼、狀態描述說明: 200 OK //客戶端請求成功 400 Bad Request //客戶端請求有語法錯誤,不能被服務器所理解 401 Unauthorized //請求未經受權,這個狀態代碼必須和WWW-Authenticate報頭域一塊兒使用 403 Forbidden //服務器收到請求,可是拒絕提供服務 404 Not Found //請求資源不存在,eg:輸入了錯誤的 URL 500 Internal Server Error //服務器發生不可預期的錯誤 503 Server Unavailable //服務器當前不能處理客戶端的請求,一段時間後,可能恢復正常 eg:HTTP/1.1 200 OK

相關文章
相關標籤/搜索