什麼是DNS?css
DNS是一種組織成域層次結構的計算機和網絡服務命名系統,他用於TCP/IP網絡,它所提供的服務是用來將主機名和域名轉換成IP地址的工做。DNS就是這樣的一位"翻譯官",它的基本工做原理能夠用下圖來表示。
DNS解析過程css3
DNS負載均衡web
DNS負載均衡技術的實現原理是在DNS服務器中爲同一個主機名配置多個IP地址,在應答NDS查詢時,DNS服務器對每一個查詢將以DNS文件中主機記錄的IP地址按順序返回不一樣的解析結果,將客戶端的訪問引導到不一樣的機器上去,使得不一樣的客戶端訪問不一樣的服務器,從而達到負載均衡的目的。
三次握手的目的後端
目的是爲了防止已經失效的鏈接請求報文段忽然有傳送到了服務端,於是產生錯誤
三次握手的過程瀏覽器
(°ー°〃)咱們用大白話解釋下三次握手緩存
快遞小哥:你好,你的快遞到了,你在家沒? 小明:在家呢,送過來吧。 快遞小哥:好的,立刻送到。
請求報文由請求行,請求頭,空行,請求體四個部分組成。服務器
GET /js/count.js HTTP/1.1
上面代碼中GET表明請求方法,/js/count.js
表示URL,HTTP/1.1
表明http版本網絡
請求頭部通知服務器關於客戶端請求的信息。它包含許多有關的客戶端環境和請求正文的有用信息。好比:
響應報文由相響應行、響應頭、響應主體三個部分組成,以下圖
HTTP/1.1 200 OK
HTTP/1.1
狀態碼:200負載均衡
響應頭爲客戶端提供了額外的信息,使得客戶端能夠作出更好的響應。
private
,表示內容只緩存到私有緩存中(僅客戶端能夠緩存,代理服務器不可緩存)服務端給客戶端返回的文本信息
關鍵渲染路徑是指瀏覽器從最初接收請求來的HTML、CSS、JS等資源,而後解析,構建樹、渲染布局、繪製,最後呈現給客戶能看到的界面的整個過程
主要包括如下幾步佈局
構建DOM樹
當瀏覽器接收到服務器響應來的HTML文檔後,會遍歷文檔節點,生成DOM樹。須要注意的是,DOM樹生成過程當中可能會被CSS和JS的加載執行阻塞。
構建CSSOM規則書
瀏覽器解析CSS文件並生成CSS規則樹,每一個CSS文件都被解析成一個StyleSheet對象,每一個對象都包含CSS規則。CSS規則對象包含對應於CSS語法的選擇器和聲明對象以及其餘對象
渲染阻塞
當瀏覽器遇到一個script標記時,DOM構建將暫停,直至腳本完成執行,而後繼續構建DOM。每次去執行Js腳本都會嚴重阻塞DOM樹的構建,若是js腳本還操做的CSSOM,而正好這個CSSOM尚未下載和構建,瀏覽器甚至會延遲腳本執行和構建DOM,直至完成其CSSOM的下載和構建。
因此script標籤的位置很重要。實際使用時,能夠遵循下面兩個原則:
構建渲染樹
經過DOM樹和CSS規則樹咱們即可以構建渲染樹。瀏覽器會先從DOM樹的根節點開始遍歷每一個可見節點。對每一個可見節點,找到其適配的CSS樣式規則並應用。
渲染樹構建完成後,每一個節點都是可見節點而且都含有其內容和對應的規則的樣式。這也是渲染樹與DOM樹最大的區別。渲染樹是用於顯示,那些不可見的元素固然就不會在這棵樹中出現了,除此以外,display等於none的也不會被顯示在這棵樹裏頭,可是visibility等於hidden的元素是會顯示在這棵樹裏頭的。
渲染樹佈局
佈局階段會從渲染樹的根節點開始遍歷,而後肯定每一個接待你對象在頁面上的確切大小與位置,佈局階段的輸出是一個盒子模型,他會精確的捕獲每一個元素在屏幕內的確切位置與大小。
渲染樹繪製
在繪製階段,遍歷渲染樹,調用渲染器的paint()方法在屏幕上顯示其內容。渲染樹的繪製工做是由瀏覽器的UI後端組件完成
迴流與重繪
根據選安然樹佈局,計算CSS樣式,即每一個節點在頁面中的帶線啊哦和位置等幾何信息。HTML默認是流式佈局的,CSS和JS會打破這種佈局,改變DOM的外觀樣式以及大小和位置。這時就會觸發迴流和重繪
重繪
屏幕的一部分重繪,不影響總體佈局,好比某個CSS的背景色變了,但元素的幾何尺寸和位置不變。
常見引發重回的屬性
迴流
當元素的大小位置改變,須要從新驗證並計算渲染樹。是渲染樹的一部分或所有發生了變化。
常見引發迴流的屬性和方法
從上面能夠看出:迴流必將引發重繪,而重繪不必定會引發迴流。
思考下面代碼會觸發幾回渲染?
div.style.left = '10px'; div.style.top = '10px'; div.style.width = '20px'; div.style.height = '20px';
這段代碼理論上會觸發4次重繪和迴流,由於每次都改變了元素的集合屬性,實際上最後支出法了一次迴流,這都得益於
當瀏覽器發現某一行代碼是改變元素樣式時,瀏覽器不會當即進行渲染,而是緩那麼一哆嗦,看你下一行代碼是否是在改樣式,若是下一行仍是改樣式,在緩一哆嗦,若是連續發現幾行代碼都是在改樣式,瀏覽器會等待這幾行代碼所有執行完,纔會進行渲染,這就是瀏覽器的渲染隊列機制
動畫效果應用position
屬性爲absolute
或fixed
元素上(脫離文檔流)
這種方法也會引起迴流,可是會對其餘元素沒有影響,能夠提高性能
硬件加速會自動規避迴流和重繪
css中又一下幾個屬性能觸發硬件加速
若是有一些元素不須要用到上述屬性,可是須要觸發硬件加速效果,可使用一些小技巧來誘導瀏覽器開啓硬件加速。
-webkit-transform: translateZ(0); -moz-transform: translateZ(0); -ms-transform: translateZ(0); -o-transform: translateZ(0); transform: translateZ(0); /**或者**/ transform: rotateZ(360deg); transform: translate3d(0, 0, 0);
要注意的問題
如今的頁面爲了優化請求的耗時,默認都會開啓持久鏈接(keep-alive),那麼一個TCP鏈接確切關閉的時機,是這個tab標籤頁關閉的時候。這個關閉的過程就是四次揮手.因爲TCP鏈接時全雙工的,所以,每一個方向都必需要單獨進行關閉,這一原則是當一方完成數據發送任務後,發送一個FIN來終止這一方向的鏈接,收到一個FIN只是意味着這一方向上沒有數據流動了,即不會再收到數據了,可是在這個TCP鏈接上仍然可以發送數據,直到這一方向也發送了FIN。首先進行關閉的一方將執行主動關閉,而另外一方則執行被動關閉