日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

前端知识总结之浏览器知识

發(fā)布時(shí)間:2023/12/16 HTML 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前端知识总结之浏览器知识 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1對(duì)瀏覽器的理解

? 瀏覽器的主要功能是將用戶選擇的 web 資源呈現(xiàn)出來,它需要從服務(wù)器請(qǐng)求資源,并將其顯示在瀏覽器窗口中,資源的格式通常 是 HTML,也包括 PDF、image 及其他格式。用戶用 URI(Uniform Resource Identifier 統(tǒng)一資源標(biāo)識(shí)符)來指定所請(qǐng) 求資源的位置。
? HTML 和 CSS 規(guī)范中規(guī)定了瀏覽器解釋 html 文檔的方式,由 W3C 組織對(duì)這些規(guī)范進(jìn)行維護(hù),W3C 是負(fù)責(zé)制定 web 標(biāo)準(zhǔn)的 組織。
? 但是瀏覽器廠商紛紛開發(fā)自己的擴(kuò)展,對(duì)規(guī)范的遵循并不完善,這為 web 開發(fā)者帶來了嚴(yán)重的兼容性問題。
? 簡(jiǎn)單來說瀏覽器可以分為兩部分,shell 和 內(nèi)核。
? 其中 shell 的種類相對(duì)比較多,內(nèi)核則比較少。shell 是指瀏覽器的外殼:例如菜單,工具欄等。主要是提供給用戶界面操作, 參數(shù)設(shè)置等等。它是調(diào)用內(nèi)核來實(shí)現(xiàn)各種功能的。內(nèi)核才是瀏覽器的核心。內(nèi)核是基于標(biāo)記語言顯示內(nèi)容的程序或模塊。也有一些 瀏覽器并不區(qū)分外殼和內(nèi)核。從 Mozilla 將 Gecko 獨(dú)立出來后,才有了外殼和內(nèi)核的明確劃分。

2. 瀏覽器內(nèi)核

? 主要分成兩部分:渲染引擎和 JS 引擎。
? 渲染引擎的職責(zé)就是渲染,即在瀏覽器窗口中顯示所請(qǐng)求的內(nèi)容。默認(rèn)情況下,渲染引擎可以顯示 html、xml 文檔及圖片,它也 可以借助插件(一種瀏覽器擴(kuò)展)顯示其他類型數(shù)據(jù),例如使用 PDF 閱讀器插件,可以顯示 PDF 格式。
? JS 引擎:解析和執(zhí)行 javascript 來實(shí)現(xiàn)網(wǎng)頁的動(dòng)態(tài)效果。
? 最開始渲染引擎和 JS 引擎并沒有區(qū)分的很明確,后來 JS 引擎越來越獨(dú)立,內(nèi)核就傾向于只指渲染引擎。

3. 常見的瀏覽器內(nèi)核比較

五大主流瀏覽器內(nèi)核的源起以及國(guó)內(nèi)各大瀏覽器內(nèi)核總結(jié)
? Trident:這種瀏覽器內(nèi)核是 IE 瀏覽器用的內(nèi)核,因?yàn)樵谠缙?IE 占有大量的市場(chǎng)份額,所以這種內(nèi)核比較流行,以前有很多 網(wǎng)頁也是根據(jù)這個(gè)內(nèi)核的標(biāo)準(zhǔn)來編寫的,但是實(shí)際上這個(gè)內(nèi)核對(duì)真正的網(wǎng)頁標(biāo)準(zhǔn)支持不是很好。但是由于 IE 的高市場(chǎng)占有率,微 軟也很長(zhǎng)時(shí)間沒有更新 Trident 內(nèi)核,就導(dǎo)致了 Trident 內(nèi)核和 W3C 標(biāo)準(zhǔn)脫節(jié)。還有就是 Trident 內(nèi)核的大量 Bug 等 安全問題沒有得到解決,加上一些專家學(xué)者公開自己認(rèn)為 IE 瀏覽器不安全的觀點(diǎn),使很多用戶開始轉(zhuǎn)向其他瀏覽器。
? Gecko:這是 Firefox 和 Flock 所采用的內(nèi)核,這個(gè)內(nèi)核的優(yōu)點(diǎn)就是功能強(qiáng)大、豐富,可以支持很多復(fù)雜網(wǎng)頁效果和瀏覽器擴(kuò) 展接口,但是代價(jià)是也顯而易見就是要消耗很多的資源,比如內(nèi)存。
? Presto:Opera 曾經(jīng)采用的就是 Presto 內(nèi)核,Presto 內(nèi)核被稱為公認(rèn)的瀏覽網(wǎng)頁速度最快的內(nèi)核,這得益于它在開發(fā)時(shí)的 天生優(yōu)勢(shì),在處理 JS 腳本等腳本語言時(shí),會(huì)比其他的內(nèi)核快3倍左右,缺點(diǎn)就是為了達(dá)到很快的速度而丟掉了一部分網(wǎng)頁兼容性。
? Webkit:Webkit 是 Safari 采用的內(nèi)核,它的優(yōu)點(diǎn)就是網(wǎng)頁瀏覽速度較快,雖然不及 Presto 但是也勝于 Gecko 和 Trid ent,缺點(diǎn)是對(duì)于網(wǎng)頁代碼的容錯(cuò)性不高,也就是說對(duì)網(wǎng)頁代碼的兼容性較低,會(huì)使一些編寫不標(biāo)準(zhǔn)的網(wǎng)頁無法正確顯示。WebKit 前身是 KDE 小組的 KHTML 引擎,可以說 WebKit 是 KHTML 的一個(gè)開源的分支。
? Blink:谷歌在 Chromium Blog 上發(fā)表博客,稱將與蘋果的開源瀏覽器核心 Webkit 分道揚(yáng)鑣,在 Chromium 項(xiàng)目中研發(fā) B link 渲染引擎(即瀏覽器核心),內(nèi)置于 Chrome 瀏覽器之中。其實(shí) Blink 引擎就是 Webkit 的一個(gè)分支,就像 webkit 是 KHTML 的分支一樣。Blink 引擎現(xiàn)在是谷歌公司與 Opera Software 共同研發(fā),上面提到過的,Opera 棄用了自己的 Presto 內(nèi)核,加入 Google 陣營(yíng),跟隨谷歌一起研發(fā) Blink。

4. 瀏覽器的渲染原理?

  • 首先解析收到的文檔,根據(jù)文檔定義構(gòu)建一棵 DOM 樹,DOM 樹是由 DOM 元素及屬性節(jié)點(diǎn)組成的。
  • 然后對(duì) CSS 進(jìn)行解析,生成 CSSOM 規(guī)則樹。
  • 根據(jù) DOM 樹和 CSSOM 規(guī)則樹構(gòu)建渲染樹。渲染樹的節(jié)點(diǎn)被稱為渲染對(duì)象,渲染對(duì)象是一個(gè)包含有顏色和大小等屬性的矩 形,渲染對(duì)象和 DOM 元素相對(duì)應(yīng),但這種對(duì)應(yīng)關(guān)系不是一對(duì)一的,不可見的 DOM 元素不會(huì)被插入渲染樹。還有一些 DOM 元素對(duì)應(yīng)幾個(gè)可見對(duì)象,它們一般是一些具有復(fù)雜結(jié)構(gòu)的元素,無法用一個(gè)矩形來描述。
  • 當(dāng)渲染對(duì)象被創(chuàng)建并添加到樹中,它們并沒有位置和大小,所以當(dāng)瀏覽器生成渲染樹以后,就會(huì)根據(jù)渲染樹來進(jìn)行布局(也 可以叫做回流)。這一階段瀏覽器要做的事情是要弄清楚各個(gè)節(jié)點(diǎn)在頁面中的確切位置和大小。通常這一行為也被稱為“自動(dòng) 重排”。
  • 布局階段結(jié)束后是繪制階段,遍歷渲染樹并調(diào)用渲染對(duì)象的 paint 方法將它們的內(nèi)容顯示在屏幕上,繪制使用 UI 基礎(chǔ)組 件。 值得注意的是,這個(gè)過程是逐步完成的,為了更好的用戶體驗(yàn),渲染引擎將會(huì)盡可能早的將內(nèi)容呈現(xiàn)到屏幕上,并不會(huì)等到所有的 html 都解析完成之后再去構(gòu)建和布局 render 樹。它是解析完一部分內(nèi)容就顯示一部分內(nèi)容,同時(shí),可能還在通過網(wǎng)絡(luò)下載其 余內(nèi)容。
  • 5. 渲染過程中遇到 JS 文件怎么處理?(瀏覽器解析過程)

    JavaScript 的加載、解析與執(zhí)行會(huì)阻塞文檔的解析,也就是說,在構(gòu)建 DOM 時(shí),HTML 解析器若遇到了 JavaScript,那么 它會(huì)暫停文檔的解析,將控制權(quán)移交給 JavaScript 引擎,等 JavaScript 引擎運(yùn)行完畢,瀏覽器再?gòu)闹袛嗟牡胤交謴?fù)繼續(xù)解 析文檔。 也就是說,如果你想首屏渲染的越快,就越不應(yīng)該在首屏就加載 JS 文件,這也是都建議將 script 標(biāo)簽放在 body 標(biāo)簽底部的 原因。當(dāng)然在當(dāng)下,并不是說 script 標(biāo)簽必須放在底部,因?yàn)槟憧梢越o script 標(biāo)簽添加 defer 或者 async 屬性。

    6. async 和 defer 的作用是什么?有什么區(qū)別?(瀏覽器解析過程)

    腳本沒有 defer 或 async,瀏覽器會(huì)立即加載并執(zhí)行指定的腳本,也就是說不等待后續(xù)載入的文檔元素,讀到就加載并執(zhí) 行。
  • defer 屬性表示延遲執(zhí)行引入的 JavaScript,即這段 JavaScript 加載時(shí) HTML 并未停止解析,這兩個(gè)過程是并行的。 當(dāng)整個(gè) document 解析完畢后再執(zhí)行腳本文件,在 DOMContentLoaded 事件觸發(fā)之前完成。多個(gè)腳本按順序執(zhí)行。
  • async 屬性表示異步執(zhí)行引入的 JavaScript,與 defer 的區(qū)別在于,如果已經(jīng)加載好,就會(huì)開始執(zhí)行,也就是說它的執(zhí) 行仍然會(huì)阻塞文檔的解析,只是它的加載過程不會(huì)阻塞。多個(gè)腳本的執(zhí)行順序無法保證。
  • 回到頂部

    7. 什么是文檔的預(yù)解析?(瀏覽器解析過程)

    Webkit 和 Firefox 都做了這個(gè)優(yōu)化,當(dāng)執(zhí)行 JavaScript 腳本時(shí),另一個(gè)線程解析剩下的文檔,并加載后面需要通過網(wǎng)絡(luò)加 載的資源。這種方式可以使資源并行加載從而使整體速度更快。需要注意的是,預(yù)解析并不改變 DOM 樹,它將這個(gè)工作留給主解析 過程,自己只解析外部資源的引用,比如外部腳本、樣式表及圖片。

    8. 渲染頁面時(shí)常見哪些不良現(xiàn)象?(瀏覽器渲染過程)

    ? FOUC:主要指的是樣式閃爍的問題,由于瀏覽器渲染機(jī)制(比如firefox),在 CSS 加載之前,先呈現(xiàn)了 HTML,就會(huì)導(dǎo)致展示 出無樣式內(nèi)容,然后樣式突然呈現(xiàn)的現(xiàn)象。會(huì)出現(xiàn)這個(gè)問題的原因主要是 css 加載時(shí)間過長(zhǎng),或者 css 被放在了文檔底 部。
    ? 白屏:有些瀏覽器渲染機(jī)制(比如chrome)要先構(gòu)建 DOM 樹和 CSSOM 樹,構(gòu)建完成后再進(jìn)行渲染,如果 CSS 部分放在 HTML 尾部,由于 CSS 未加載完成,瀏覽器遲遲未渲染,從而導(dǎo)致白屏;也可能是把 js 文件放在頭部,腳本的加載會(huì)阻塞后面 文檔內(nèi)容的解析,從而頁面遲遲未渲染出來,出現(xiàn)白屏問題。

    9. CSS 如何阻塞文檔解析?(瀏覽器解析過程)

    ? 理論上,既然樣式表不改變 DOM 樹,也就沒有必要停下文檔的解析等待它們,然而,存在一個(gè)問題,JavaScript 腳本執(zhí)行時(shí)可 能在文檔的解析過程中請(qǐng)求樣式信息,如果樣式還沒有加載和解析,腳本將得到錯(cuò)誤的值,顯然這將會(huì)導(dǎo)致很多問題。
    ? 所以如果瀏覽器尚未完成 CSSOM 的下載和構(gòu)建,而我們卻想在此時(shí)運(yùn)行腳本,那么瀏覽器將延遲 JavaScript 腳本執(zhí)行和文檔 的解析,直至其完成 CSSOM 的下載和構(gòu)建。也就是說,在這種情況下,瀏覽器會(huì)先下載和構(gòu)建 CSSOM,然后再執(zhí)行 JavaScript, 最后再繼續(xù)文檔的解析。

    10. 如何優(yōu)化關(guān)鍵渲染路徑?(瀏覽器渲染過程)

    為盡快完成首次渲染,我們需要最大限度減小以下三種可變因素:
    (1)關(guān)鍵資源的數(shù)量。
    (2)關(guān)鍵路徑長(zhǎng)度。
    (3)關(guān)鍵字節(jié)的數(shù)量。
    關(guān)鍵資源是可能阻止網(wǎng)頁首次渲染的資源。這些資源越少,瀏覽器的工作量就越小,對(duì) CPU 以及其他資源的占用也就越少。
    同樣,關(guān)鍵路徑長(zhǎng)度受所有關(guān)鍵資源與其字節(jié)大小之間依賴關(guān)系圖的影響:某些資源只能在上一資源處理完畢之后才能開始下載, 并且資源越大,下載所需的往返次數(shù)就越多。
    最后,瀏覽器需要下載的關(guān)鍵字節(jié)越少,處理內(nèi)容并讓其出現(xiàn)在屏幕上的速度就越快。要減少字節(jié)數(shù),我們可以減少資源數(shù)(將它 們刪除或設(shè)為非關(guān)鍵資源),此外還要壓縮和優(yōu)化各項(xiàng)資源,確保最大限度減小傳送大小。
    優(yōu)化關(guān)鍵渲染路徑的常規(guī)步驟如下:
    (1)對(duì)關(guān)鍵路徑進(jìn)行分析和特性描述:資源數(shù)、字節(jié)數(shù)、長(zhǎng)度。
    (2)最大限度減少關(guān)鍵資源的數(shù)量:刪除它們,延遲它們的下載,將它們標(biāo)記為異步等。
    (3)優(yōu)化關(guān)鍵字節(jié)數(shù)以縮短下載時(shí)間(往返次數(shù))。
    (4)優(yōu)化其余關(guān)鍵資源的加載順序:您需要盡早下載所有關(guān)鍵資產(chǎn),以縮短關(guān)鍵路徑長(zhǎng)度。

    11 什么是重繪和回流?(瀏覽器繪制過程)

    重繪: 當(dāng)渲染樹中的一些元素需要更新屬性,而這些屬性只是影響元素的外觀、風(fēng)格,而不會(huì)影響布局的操作,比如 background -color,我們將這樣的操作稱為重繪。
    回流:當(dāng)渲染樹中的一部分(或全部)因?yàn)樵氐囊?guī)模尺寸、布局、隱藏等改變而需要重新構(gòu)建的操作,會(huì)影響到布局的操作,這樣 的操作我們稱為回流。
    常見引起回流屬性和方法: 任何會(huì)改變?cè)貛缀涡畔?#xff08;元素的位置和尺寸大小)的操作,都會(huì)觸發(fā)回流。
    32. 添加或者刪除可見的 DOM 元素;
    33. 元素尺寸改變——邊距、填充、邊框、寬度和高度
    34. 內(nèi)容變化,比如用戶在 input 框中輸入文字
    35. 瀏覽器窗口尺寸改變——resize事件發(fā)生時(shí)
    36. 計(jì)算 offsetWidth 和 offsetHeight 屬性
    37. 設(shè)置 style 屬性的值
    38. 當(dāng)你修改網(wǎng)頁的默認(rèn)字體時(shí)。 回流必定會(huì)發(fā)生重繪,重繪不一定會(huì)引發(fā)回流。回流所需的成本比重繪高的多,改變父節(jié)點(diǎn)里的子節(jié)點(diǎn)很可能會(huì)導(dǎo)致父節(jié)點(diǎn)的一系列 回流。

    12. 如何減少回流?(瀏覽器繪制過程)

  • 使用 transform 替代 top
  • 不要把節(jié)點(diǎn)的屬性值放在一個(gè)循環(huán)里當(dāng)成循環(huán)里的變量
  • 不要使用 table 布局,可能很小的一個(gè)小改動(dòng)會(huì)造成整個(gè) table 的重新布局
  • 把 DOM 離線后修改。如:使用 documentFragment 對(duì)象在內(nèi)存里操作 DOM
  • 不要一條一條地修改 DOM 的樣式。與其這樣,還不如預(yù)先定義好 css 的 class,然后修改 DOM 的 className。
  • 13. 為什么操作 DOM 慢?(瀏覽器繪制過程)

    一些 DOM 的操作或者屬性訪問可能會(huì)引起頁面的回流和重繪,從而引起性能上的消耗。

    14. DOMContentLoaded 事件和 Load 事件的區(qū)別?

    ? 當(dāng)初始的 HTML 文檔被完全加載和解析完成之后,DOMContentLoaded 事件被觸發(fā),而無需等待樣式表、圖像和 子框架的加載完成。
    ? Load 事件是當(dāng)所有資源加載完成后觸發(fā)的。
    回到頂部

    15. 主流瀏覽器內(nèi)核私有屬性 css 前綴?

    ? mozilla 內(nèi)核 (firefox,flock 等) -moz
    ? webkit 內(nèi)核 (safari,chrome 等) -webkit
    ? opera 內(nèi)核 (opera 瀏覽器) -o
    ? trident 內(nèi)核 (ie 瀏覽器) -ms

    16、什么叫優(yōu)雅降級(jí)和漸進(jìn)增強(qiáng)?

    漸進(jìn)增強(qiáng) progressive enhancement:
    針對(duì)低版本瀏覽器進(jìn)行構(gòu)建頁面,保證最基本的功能,然后再針對(duì)高級(jí)瀏覽器進(jìn)行效果、交互等改進(jìn)和追加功能達(dá)到更好的用戶體驗(yàn)。

    優(yōu)雅降級(jí) graceful degradation:
    一開始就構(gòu)建完整的功能,然后再針對(duì)低版本瀏覽器進(jìn)行兼容。

    區(qū)別:

    a. 優(yōu)雅降級(jí)是從復(fù)雜的現(xiàn)狀開始,并試圖減少用戶體驗(yàn)的供給

    b. 漸進(jìn)增強(qiáng)則是從一個(gè)非常基礎(chǔ)的,能夠起作用的版本開始,并不斷擴(kuò)充,以適應(yīng)未來環(huán)境的需要

    c. 降級(jí)(功能衰減)意味著往回看;而漸進(jìn)增強(qiáng)則意味著朝前看,同時(shí)保證其根基處于安全地帶

    17、sessionStorage 、localStorage 和 cookie 之間的區(qū)別

    共同點(diǎn):用于瀏覽器端存儲(chǔ)的緩存數(shù)據(jù)

    不同點(diǎn):

    (1)、存儲(chǔ)內(nèi)容是否發(fā)送到服務(wù)器端:當(dāng)設(shè)置了Cookie后,數(shù)據(jù)會(huì)發(fā)送到服務(wù)器端,造成一定的寬帶浪費(fèi);

    web storage,會(huì)將數(shù)據(jù)保存到本地,不會(huì)造成寬帶浪費(fèi);

    (2)、數(shù)據(jù)存儲(chǔ)大小不同:Cookie數(shù)據(jù)不能超過4K,適用于會(huì)話標(biāo)識(shí);web storage數(shù)據(jù)存儲(chǔ)可以達(dá)到5M;

    (3)、數(shù)據(jù)存儲(chǔ)的有效期限不同:cookie只在設(shè)置了Cookid過期時(shí)間之前一直有效,即使關(guān)閉窗口或者瀏覽器;

    sessionStorage,僅在關(guān)閉瀏覽器之前有效;localStorage,數(shù)據(jù)存儲(chǔ)永久有效;

    (4)、作用域不同:cookie和localStorage是在同源同窗口中都是共享的;sessionStorage不在不同的瀏覽器窗口中共享,即使是同一個(gè)頁面;

    18、Web Storage與Cookie相比存在的優(yōu)勢(shì):

    (1)、存儲(chǔ)空間更大:IE8下每個(gè)獨(dú)立的存儲(chǔ)空間為10M,其他瀏覽器實(shí)現(xiàn)略有不同,但都比Cookie要大很多。

    (2)、存儲(chǔ)內(nèi)容不會(huì)發(fā)送到服務(wù)器:當(dāng)設(shè)置了Cookie后,Cookie的內(nèi)容會(huì)隨著請(qǐng)求一并發(fā)送的服務(wù)器,這對(duì)于本地存儲(chǔ)的數(shù)據(jù)是一種帶寬浪費(fèi)。而Web Storage中的數(shù)據(jù)則僅僅是存在本地,不會(huì)與服務(wù)器發(fā)生任何交互。

    (3)、更多豐富易用的接口:Web Storage提供了一套更為豐富的接口,如setItem,getItem,removeItem,clear等,使得數(shù)據(jù)操作更為簡(jiǎn)便。cookie需要自己封裝。

    (4)、獨(dú)立的存儲(chǔ)空間:每個(gè)域(包括子域)有獨(dú)立的存儲(chǔ)空間,各個(gè)存儲(chǔ)空間是完全獨(dú)立的,因此不會(huì)造成數(shù)據(jù)混亂。

    19、請(qǐng)指出document load和document ready的區(qū)別?

    共同點(diǎn):這兩種事件都代表的是頁面文檔加載時(shí)觸發(fā)。

    異同點(diǎn):

    ready 事件的觸發(fā),表示文檔結(jié)構(gòu)已經(jīng)加載完成(不包含圖片等非文字媒體文件)。

    onload 事件的觸發(fā),表示頁面包含圖片等文件在內(nèi)的所有元素都加載完成。
    開發(fā)及性能優(yōu)化
    1、規(guī)避javascript多人開發(fā)函數(shù)重名問題
    命名空間
    封閉空間
    js模塊化mvc(數(shù)據(jù)層、表現(xiàn)層、控制層)
    seajs
    變量轉(zhuǎn)換成對(duì)象的屬性
    對(duì)象化
    2、請(qǐng)說出三種減低頁面加載時(shí)間的方法
    壓縮css、js文件
    合并js、css文件,減少http請(qǐng)求
    外部js、css文件放在最底下
    減少dom操作,盡可能用變量替代不必要的dom操作
    3、你所了解到的Web攻擊技術(shù)
    (1)XSS(Cross-Site Scripting,跨站腳本攻擊):指通過存在安全漏洞的Web網(wǎng)站注冊(cè)用戶的瀏覽器內(nèi)運(yùn)行非法的HTML標(biāo)簽或者JavaScript進(jìn)行的一種攻擊。
    (2)SQL注入攻擊
    (3)CSRF(Cross-Site Request Forgeries,跨站點(diǎn)請(qǐng)求偽造):指攻擊者通過設(shè)置好的陷阱,強(qiáng)制對(duì)已完成的認(rèn)證用戶進(jìn)行非預(yù)期的個(gè)人信息或設(shè)定信息等某些狀態(tài)更新。

    4、web前端開發(fā),如何提高頁面性能優(yōu)化?
    內(nèi)容方面:

    1.減少 HTTP 請(qǐng)求 (Make Fewer HTTP Requests)

    2.減少 DOM 元素?cái)?shù)量 (Reduce the Number of DOM Elements)

    3.使得 Ajax 可緩存 (Make Ajax Cacheable)

    針對(duì)CSS:

    1.把 CSS 放到代碼頁上端 (Put Stylesheets at the Top)

    2.從頁面中剝離 JavaScript 與 CSS (Make JavaScript and CSS External)

    3.精簡(jiǎn) JavaScript 與 CSS (Minify JavaScript and CSS)

    4.避免 CSS 表達(dá)式 (Avoid CSS Expressions)

    針對(duì)JavaScript :

  • 腳本放到 HTML 代碼頁底部 (Put Scripts at the Bottom)

  • 從頁面中剝離 JavaScript 與 CSS (Make JavaScript and CSS External)

  • 精簡(jiǎn) JavaScript 與 CSS (Minify JavaScript and CSS)

  • 移除重復(fù)腳本 (Remove Duplicate Scripts)

  • 面向圖片(Image):

    1.優(yōu)化圖片

    2 不要在 HTML 中使用縮放圖片

    3 使用恰當(dāng)?shù)膱D片格式

    4 使用 CSS Sprites 技巧對(duì)圖片優(yōu)化

    5、前端開發(fā)中,如何優(yōu)化圖像?圖像格式的區(qū)別?
    優(yōu)化圖像:

    1、不用圖片,盡量用css3代替。 比如說要實(shí)現(xiàn)修飾效果,如半透明、邊框、圓角、陰影、漸變等,在當(dāng)前主流瀏覽器中都可以用CSS達(dá)成。

    2、 使用矢量圖SVG替代位圖。對(duì)于絕大多數(shù)圖案、圖標(biāo)等,矢量圖更小,且可縮放而無需生成多套圖。現(xiàn)在主流瀏覽器都支持SVG了,所以可放心使用!

    3.、使用恰當(dāng)?shù)膱D片格式。我們常見的圖片格式有JPEG、GIF、PNG。

    基本上,內(nèi)容圖片多為照片之類的,適用于JPEG。

    而修飾圖片通常更適合用無損壓縮的PNG。

    GIF基本上除了GIF動(dòng)畫外不要使用。且動(dòng)畫的話,也更建議用video元素和視頻格式,或用SVG動(dòng)畫取代。

    4、按照HTTP協(xié)議設(shè)置合理的緩存。

    5、使用字體圖標(biāo)webfont、CSS Sprites等。

    6、用CSS或JavaScript實(shí)現(xiàn)預(yù)加載。

    7、WebP圖片格式能給前端帶來的優(yōu)化。WebP支持無損、有損壓縮,動(dòng)態(tài)、靜態(tài)圖片,壓縮比率優(yōu)于GIF、JPEG、JPEG2000、PG等格式,非常適合用于網(wǎng)絡(luò)等圖片傳輸。

    圖像格式的區(qū)別:

    矢量圖:圖標(biāo)字體,如 font-awesome;svg

    位圖:gif,jpg(jpeg),png

    區(qū)別:

    1、gif:是是一種無損,8位圖片格式。具有支持動(dòng)畫,索引透明,壓縮等特性。適用于做色彩簡(jiǎn)單(色調(diào)少)的圖片,如logo,各種小圖標(biāo)icons等。

    2、JPEG格式是一種大小與質(zhì)量相平衡的壓縮圖片格式。適用于允許輕微失真的色彩豐富的照片,不適合做色彩簡(jiǎn)單(色調(diào)少)的圖片,如logo,各種小圖標(biāo)icons等。

    3、png:PNG可以細(xì)分為三種格式:PNG8,PNG24,PNG32。后面的數(shù)字代表這種PNG格式最多可以索引和存儲(chǔ)的顏色值。

    關(guān)于透明:PNG8支持索引透明和alpha透明;PNG24不支持透明;而PNG32在24位的PNG基礎(chǔ)上增加了8位(256階)的alpha通道透明;

    優(yōu)缺點(diǎn):

    1、能在保證最不失真的情況下盡可能壓縮圖像文件的大小。

    2、對(duì)于需要高保真的較復(fù)雜的圖像,PNG雖然能無損壓縮,但圖片文件較大,不適合應(yīng)用在Web頁面上。

    20、瀏覽器是如何渲染頁面的?

    渲染的流程如下:

    1.解析HTML文件,創(chuàng)建DOM樹。

    自上而下,遇到任何樣式(link、style)與腳本(script)都會(huì)阻塞(外部樣式不阻塞后續(xù)外部腳本的加載)。

    2.解析CSS。優(yōu)先級(jí):瀏覽器默認(rèn)設(shè)置<用戶設(shè)置<外部樣式<內(nèi)聯(lián)樣式<HTML中的style樣式;

    3.將CSS與DOM合并,構(gòu)建渲染樹(Render Tree)

    4.布局和繪制,重繪(repaint)和重排(reflow)

    21、深入理解瀏覽器的緩存機(jī)制

    一、前言
    緩存可以說是性能優(yōu)化中簡(jiǎn)單高效的一種優(yōu)化方式了。一個(gè)優(yōu)秀的緩存策略可以縮短網(wǎng)頁請(qǐng)求資源的距離,減少延遲,并且由于緩存文件可以重復(fù)利用,還可以減少帶寬,降低網(wǎng)絡(luò)負(fù)荷。
    對(duì)于一個(gè)數(shù)據(jù)請(qǐng)求來說,可以分為發(fā)起網(wǎng)絡(luò)請(qǐng)求、后端處理、瀏覽器響應(yīng)三個(gè)步驟。瀏覽器緩存可以幫助我們?cè)诘谝缓偷谌襟E中優(yōu)化性能。比如說直接使用緩存而不發(fā)起請(qǐng)求,或者發(fā)起了請(qǐng)求但后端存儲(chǔ)的數(shù)據(jù)和前端一致,那么就沒有必要再將數(shù)據(jù)回傳回來,這樣就減少了響應(yīng)數(shù)據(jù)。
    接下來的內(nèi)容中我們將通過緩存位置、緩存策略以及實(shí)際場(chǎng)景應(yīng)用緩存策略來探討瀏覽器緩存機(jī)制。
    二、緩存位置
    從緩存位置上來說分為四種,并且各自有優(yōu)先級(jí),當(dāng)依次查找緩存且都沒有命中的時(shí)候,才會(huì)去請(qǐng)求網(wǎng)絡(luò)。
    ? Service Worker
    ? Memory Cache
    ? Disk Cache
    ? Push Cache
    1.Service Worker
    Service Worker 是運(yùn)行在瀏覽器背后的獨(dú)立線程,一般可以用來實(shí)現(xiàn)緩存功能。使用 Service Worker的話,傳輸協(xié)議必須為 HTTPS。因?yàn)?Service Worker 中涉及到請(qǐng)求攔截,所以必須使用 HTTPS 協(xié)議來保障安全。Service Worker 的緩存與瀏覽器其他內(nèi)建的緩存機(jī)制不同,它可以讓我們自由控制緩存哪些文件、如何匹配緩存、如何讀取緩存,并且緩存是持續(xù)性的。
    Service Worker 實(shí)現(xiàn)緩存功能一般分為三個(gè)步驟:首先需要先注冊(cè) Service Worker,然后監(jiān)聽到 install 事件以后就可以緩存需要的文件,那么在下次用戶訪問的時(shí)候就可以通過攔截請(qǐng)求的方式查詢是否存在緩存,存在緩存的話就可以直接讀取緩存文件,否則就去請(qǐng)求數(shù)據(jù)。
    當(dāng) Service Worker 沒有命中緩存的時(shí)候,我們需要去調(diào)用 fetch 函數(shù)獲取數(shù)據(jù)。也就是說,如果我們沒有在 Service Worker 命中緩存的話,會(huì)根據(jù)緩存查找優(yōu)先級(jí)去查找數(shù)據(jù)。但是不管我們是從 Memory Cache 中還是從網(wǎng)絡(luò)請(qǐng)求中獲取的數(shù)據(jù),瀏覽器都會(huì)顯示我們是從 Service Worker 中獲取的內(nèi)容。
    2.Memory Cache
    Memory Cache 也就是內(nèi)存中的緩存,主要包含的是當(dāng)前中頁面中已經(jīng)抓取到的資源,例如頁面上已經(jīng)下載的樣式、腳本、圖片等。讀取內(nèi)存中的數(shù)據(jù)肯定比磁盤快,內(nèi)存緩存雖然讀取高效,可是緩存持續(xù)性很短,會(huì)隨著進(jìn)程的釋放而釋放。 一旦我們關(guān)閉 Tab 頁面,內(nèi)存中的緩存也就被釋放了。
    那么既然內(nèi)存緩存這么高效,我們是不是能讓數(shù)據(jù)都存放在內(nèi)存中呢?
    這是不可能的。計(jì)算機(jī)中的內(nèi)存一定比硬盤容量小得多,操作系統(tǒng)需要精打細(xì)算內(nèi)存的使用,所以能讓我們使用的內(nèi)存必然不多。
    當(dāng)我們?cè)L問過頁面以后,再次刷新頁面,可以發(fā)現(xiàn)很多數(shù)據(jù)都來自于內(nèi)存緩存
    內(nèi)存緩存中有一塊重要的緩存資源是preloader相關(guān)指令(例如)下載的資源。總所周知preloader的相關(guān)指令已經(jīng)是頁面優(yōu)化的常見手段之一,它可以一邊解析js/css文件,一邊網(wǎng)絡(luò)請(qǐng)求下一個(gè)資源。
    需要注意的事情是,內(nèi)存緩存在緩存資源時(shí)并不關(guān)心返回資源的HTTP緩存頭Cache-Control是什么值,同時(shí)資源的匹配也并非僅僅是對(duì)URL做匹配,還可能會(huì)對(duì)Content-Type,CORS等其他特征做校驗(yàn)。
    3.Disk Cache
    Disk Cache 也就是存儲(chǔ)在硬盤中的緩存,讀取速度慢點(diǎn),但是什么都能存儲(chǔ)到磁盤中,比之 Memory Cache 勝在容量和存儲(chǔ)時(shí)效性上。
    在所有瀏覽器緩存中,Disk Cache 覆蓋面基本是最大的。它會(huì)根據(jù) HTTP Herder 中的字段判斷哪些資源需要緩存,哪些資源可以不請(qǐng)求直接使用,哪些資源已經(jīng)過期需要重新請(qǐng)求。并且即使在跨站點(diǎn)的情況下,相同地址的資源一旦被硬盤緩存下來,就不會(huì)再次去請(qǐng)求數(shù)據(jù)。絕大部分的緩存都來自 Disk Cache,關(guān)于 HTTP 的協(xié)議頭中的緩存字段,我們會(huì)在下文進(jìn)行詳細(xì)介紹。
    瀏覽器會(huì)把哪些文件丟進(jìn)內(nèi)存中?哪些丟進(jìn)硬盤中?
    關(guān)于這點(diǎn),網(wǎng)上說法不一,不過以下觀點(diǎn)比較靠得住:
    ? 對(duì)于大文件來說,大概率是不存儲(chǔ)在內(nèi)存中的,反之優(yōu)先
    ? 當(dāng)前系統(tǒng)內(nèi)存使用率高的話,文件優(yōu)先存儲(chǔ)進(jìn)硬盤
    4.Push Cache
    Push Cache(推送緩存)是 HTTP/2 中的內(nèi)容,當(dāng)以上三種緩存都沒有命中時(shí),它才會(huì)被使用。它只在會(huì)話(Session)中存在,一旦會(huì)話結(jié)束就被釋放,并且緩存時(shí)間也很短暫,在Chrome瀏覽器中只有5分鐘左右,同時(shí)它也并非嚴(yán)格執(zhí)行HTTP頭中的緩存指令。
    結(jié)論:
    ? 所有的資源都能被推送,并且能夠被緩存,但是 Edge 和 Safari 瀏覽器支持相對(duì)比較差
    ? 可以推送 no-cache 和 no-store 的資源
    ? 一旦連接被關(guān)閉,Push Cache 就被釋放
    ? 多個(gè)頁面可以使用同一個(gè)HTTP/2的連接,也就可以使用同一個(gè)Push Cache。這主要還是依賴瀏覽器的實(shí)現(xiàn)而定,出于對(duì)性能的考慮,有的瀏覽器會(huì)對(duì)相同域名但不同的tab標(biāo)簽使用同一個(gè)HTTP連接。
    ? Push Cache 中的緩存只能被使用一次
    ? 瀏覽器可以拒絕接受已經(jīng)存在的資源推送
    ? 你可以給其他域名推送資源
    如果以上四種緩存都沒有命中的話,那么只能發(fā)起請(qǐng)求來獲取資源了。
    那么為了性能上的考慮,大部分的接口都應(yīng)該選擇好緩存策略,通常瀏覽器緩存策略分為兩種:強(qiáng)緩存和協(xié)商緩存,并且緩存策略都是通過設(shè)置 HTTP Header 來實(shí)現(xiàn)的。
    三、緩存過程分析
    瀏覽器與服務(wù)器通信的方式為應(yīng)答模式,即是:瀏覽器發(fā)起HTTP請(qǐng)求 – 服務(wù)器響應(yīng)該請(qǐng)求,那么瀏覽器怎么確定一個(gè)資源該不該緩存,如何去緩存呢?瀏覽器第一次向服務(wù)器發(fā)起該請(qǐng)求后拿到請(qǐng)求結(jié)果后,將請(qǐng)求結(jié)果和緩存標(biāo)識(shí)存入瀏覽器緩存,瀏覽器對(duì)于緩存的處理是根據(jù)第一次請(qǐng)求資源時(shí)返回的響應(yīng)頭來確定的。
    ? 瀏覽器每次發(fā)起請(qǐng)求,都會(huì)先在瀏覽器緩存中查找該請(qǐng)求的結(jié)果以及緩存標(biāo)識(shí)
    ? 瀏覽器每次拿到返回的請(qǐng)求結(jié)果都會(huì)將該結(jié)果和緩存標(biāo)識(shí)存入瀏覽器緩存中
    以上兩點(diǎn)結(jié)論就是瀏覽器緩存機(jī)制的關(guān)鍵,它確保了每個(gè)請(qǐng)求的緩存存入與讀取,只要我們?cè)倮斫鉃g覽器緩存的使用規(guī)則,那么所有的問題就迎刃而解了,本文也將圍繞著這點(diǎn)進(jìn)行詳細(xì)分析。為了方便大家理解,這里我們根據(jù)是否需要向服務(wù)器重新發(fā)起HTTP請(qǐng)求將緩存過程分為兩個(gè)部分,分別是強(qiáng)緩存和協(xié)商緩存。
    四、強(qiáng)緩存
    強(qiáng)緩存:不會(huì)向服務(wù)器發(fā)送請(qǐng)求,直接從緩存中讀取資源,在chrome控制臺(tái)的Network選項(xiàng)中可以看到該請(qǐng)求返回200的狀態(tài)碼,并且Size顯示from disk cache或from memory cache。強(qiáng)緩存可以通過設(shè)置兩種 HTTP Header 實(shí)現(xiàn):Expires 和 Cache-Control。
    1.Expires
    緩存過期時(shí)間,用來指定資源到期的時(shí)間,是服務(wù)器端的具體的時(shí)間點(diǎn)。也就是說,Expires=max-age + 請(qǐng)求時(shí)間,需要和Last-modified結(jié)合使用。Expires是Web服務(wù)器響應(yīng)消息頭字段,在響應(yīng)http請(qǐng)求時(shí)告訴瀏覽器在過期時(shí)間前瀏覽器可以直接從瀏覽器緩存取數(shù)據(jù),而無需再次請(qǐng)求。
    Expires 是 HTTP/1 的產(chǎn)物,受限于本地時(shí)間,如果修改了本地時(shí)間,可能會(huì)造成緩存失效。Expires: Wed, 22 Oct 2018 08:41:00 GMT表示資源會(huì)在 Wed, 22 Oct 2018 08:41:00 GMT 后過期,需要再次請(qǐng)求。
    2.Cache-Control
    在HTTP/1.1中,Cache-Control是最重要的規(guī)則,主要用于控制網(wǎng)頁緩存。比如當(dāng)Cache-Control:max-age=300時(shí),則代表在這個(gè)請(qǐng)求正確返回時(shí)間(瀏覽器也會(huì)記錄下來)的5分鐘內(nèi)再次加載資源,就會(huì)命中強(qiáng)緩存。
    Cache-Control 可以在請(qǐng)求頭或者響應(yīng)頭中設(shè)置,并且可以組合使用多種指令:
    public:所有內(nèi)容都將被緩存(客戶端和代理服務(wù)器都可緩存)。具體來說響應(yīng)可被任何中間節(jié)點(diǎn)緩存,如 Browser <-- proxy1 <-- proxy2 <-- Server,中間的proxy可以緩存資源,比如下次再請(qǐng)求同一資源proxy1直接把自己緩存的東西給 Browser 而不再向proxy2要。
    private:所有內(nèi)容只有客戶端可以緩存,Cache-Control的默認(rèn)取值。具體來說,表示中間節(jié)點(diǎn)不允許緩存,對(duì)于Browser <-- proxy1 <-- proxy2 <-- Server,proxy 會(huì)老老實(shí)實(shí)把Server 返回的數(shù)據(jù)發(fā)送給proxy1,自己不緩存任何數(shù)據(jù)。當(dāng)下次Browser再次請(qǐng)求時(shí)proxy會(huì)做好請(qǐng)求轉(zhuǎn)發(fā)而不是自作主張給自己緩存的數(shù)據(jù)。
    no-cache:客戶端緩存內(nèi)容,是否使用緩存則需要經(jīng)過協(xié)商緩存來驗(yàn)證決定。表示不使用 Cache-Control的緩存控制方式做前置驗(yàn)證,而是使用 Etag 或者Last-Modified字段來控制緩存。需要注意的是,no-cache這個(gè)名字有一點(diǎn)誤導(dǎo)。設(shè)置了no-cache之后,并不是說瀏覽器就不再緩存數(shù)據(jù),只是瀏覽器在使用緩存數(shù)據(jù)時(shí),需要先確認(rèn)一下數(shù)據(jù)是否還跟服務(wù)器保持一致。
    no-store:所有內(nèi)容都不會(huì)被緩存,即不使用強(qiáng)制緩存,也不使用協(xié)商緩存
    max-age:max-age=xxx (xxx is numeric)表示緩存內(nèi)容將在xxx秒后失效
    s-maxage(單位為s):同max-age作用一樣,只在代理服務(wù)器中生效(比如CDN緩存)。比如當(dāng)s-maxage=60時(shí),在這60秒中,即使更新了CDN的內(nèi)容,瀏覽器也不會(huì)進(jìn)行請(qǐng)求。max-age用于普通緩存,而s-maxage用于代理緩存。s-maxage的優(yōu)先級(jí)高于max-age。如果存在s-maxage,則會(huì)覆蓋掉max-age和Expires header。
    max-stale:能容忍的最大過期時(shí)間。max-stale指令標(biāo)示了客戶端愿意接收一個(gè)已經(jīng)過期了的響應(yīng)。如果指定了max-stale的值,則最大容忍時(shí)間為對(duì)應(yīng)的秒數(shù)。如果沒有指定,那么說明瀏覽器愿意接收任何age的響應(yīng)(age表示響應(yīng)由源站生成或確認(rèn)的時(shí)間與當(dāng)前時(shí)間的差值)。
    min-fresh:能夠容忍的最小新鮮度。min-fresh標(biāo)示了客戶端不愿意接受新鮮度不多于當(dāng)前的age加上min-fresh設(shè)定的時(shí)間之和的響應(yīng)。
    從圖中我們可以看到,我們可以將多個(gè)指令配合起來一起使用,達(dá)到多個(gè)目的。比如說我們希望資源能被緩存下來,并且是客戶端和代理服務(wù)器都能緩存,還能設(shè)置緩存失效時(shí)間等等。
    3.Expires和Cache-Control兩者對(duì)比
    其實(shí)這兩者差別不大,區(qū)別就在于 Expires 是http1.0的產(chǎn)物,Cache-Control是http1.1的產(chǎn)物,兩者同時(shí)存在的話,Cache-Control優(yōu)先級(jí)高于Expires;在某些不支持HTTP1.1的環(huán)境下,Expires就會(huì)發(fā)揮用處。所以Expires其實(shí)是過時(shí)的產(chǎn)物,現(xiàn)階段它的存在只是一種兼容性的寫法。
    強(qiáng)緩存判斷是否緩存的依據(jù)來自于是否超出某個(gè)時(shí)間或者某個(gè)時(shí)間段,而不關(guān)心服務(wù)器端文件是否已經(jīng)更新,這可能會(huì)導(dǎo)致加載文件不是服務(wù)器端最新的內(nèi)容,那我們?nèi)绾潍@知服務(wù)器端內(nèi)容是否已經(jīng)發(fā)生了更新呢?此時(shí)我們需要用到協(xié)商緩存策略。
    五、協(xié)商緩存
    協(xié)商緩存就是強(qiáng)制緩存失效后,瀏覽器攜帶緩存標(biāo)識(shí)向服務(wù)器發(fā)起請(qǐng)求,由服務(wù)器根據(jù)緩存標(biāo)識(shí)決定是否使用緩存的過程,主要有以下兩種情況:
    ? 協(xié)商緩存生效,返回304和Not Modified
    ? 協(xié)商緩存失效,返回200和請(qǐng)求結(jié)果
    協(xié)商緩存可以通過設(shè)置兩種 HTTP Header 實(shí)現(xiàn):Last-Modified 和 ETag 。
    1.Last-Modified和If-Modified-Since
    瀏覽器在第一次訪問資源時(shí),服務(wù)器返回資源的同時(shí),在response header中添加 Last-Modified的header,值是這個(gè)資源在服務(wù)器上的最后修改時(shí)間,瀏覽器接收后緩存文件和header;
    Last-Modified: Fri, 22 Jul 2016 01:47:00 GMT
    瀏覽器下一次請(qǐng)求這個(gè)資源,瀏覽器檢測(cè)到有 Last-Modified這個(gè)header,于是添加If-Modified-Since這個(gè)header,值就是Last-Modified中的值;服務(wù)器再次收到這個(gè)資源請(qǐng)求,會(huì)根據(jù) If-Modified-Since 中的值與服務(wù)器中這個(gè)資源的最后修改時(shí)間對(duì)比,如果沒有變化,返回304和空的響應(yīng)體,直接從緩存讀取,如果If-Modified-Since的時(shí)間小于服務(wù)器中這個(gè)資源的最后修改時(shí)間,說明文件有更新,于是返回新的資源文件和200
    但是 Last-Modified 存在一些弊端:
    ? 如果本地打開緩存文件,即使沒有對(duì)文件進(jìn)行修改,但還是會(huì)造成 Last-Modified 被修改,服務(wù)端不能命中緩存導(dǎo)致發(fā)送相同的資源
    ? 因?yàn)?Last-Modified 只能以秒計(jì)時(shí),如果在不可感知的時(shí)間內(nèi)修改完成文件,那么服務(wù)端會(huì)認(rèn)為資源還是命中了,不會(huì)返回正確的資源
    既然根據(jù)文件修改時(shí)間來決定是否緩存尚有不足,能否可以直接根據(jù)文件內(nèi)容是否修改來決定緩存策略?所以在 HTTP / 1.1 出現(xiàn)了 ETag 和If-None-Match
    2.ETag和If-None-Match
    Etag是服務(wù)器響應(yīng)請(qǐng)求時(shí),返回當(dāng)前資源文件的一個(gè)唯一標(biāo)識(shí)(由服務(wù)器生成),只要資源有變化,Etag就會(huì)重新生成。瀏覽器在下一次加載資源向服務(wù)器發(fā)送請(qǐng)求時(shí),會(huì)將上一次返回的Etag值放到request header里的If-None-Match里,服務(wù)器只需要比較客戶端傳來的If-None-Match跟自己服務(wù)器上該資源的ETag是否一致,就能很好地判斷資源相對(duì)客戶端而言是否被修改過了。如果服務(wù)器發(fā)現(xiàn)ETag匹配不上,那么直接以常規(guī)GET 200回包形式將新的資源(當(dāng)然也包括了新的ETag)發(fā)給客戶端;如果ETag是一致的,則直接返回304知會(huì)客戶端直接使用本地緩存即可。
    3.兩者之間對(duì)比:
    ? 首先在精確度上,Etag要優(yōu)于Last-Modified。
    Last-Modified的時(shí)間單位是秒,如果某個(gè)文件在1秒內(nèi)改變了多次,那么他們的Last-Modified其實(shí)并沒有體現(xiàn)出來修改,但是Etag每次都會(huì)改變確保了精度;如果是負(fù)載均衡的服務(wù)器,各個(gè)服務(wù)器生成的Last-Modified也有可能不一致。
    ? 第二在性能上,Etag要遜于Last-Modified,畢竟Last-Modified只需要記錄時(shí)間,而Etag需要服務(wù)器通過算法來計(jì)算出一個(gè)hash值。
    ? 第三在優(yōu)先級(jí)上,服務(wù)器校驗(yàn)優(yōu)先考慮Etag
    六、緩存機(jī)制
    強(qiáng)制緩存優(yōu)先于協(xié)商緩存進(jìn)行,若強(qiáng)制緩存(Expires和Cache-Control)生效則直接使用緩存,若不生效則進(jìn)行協(xié)商緩存(Last-Modified / If-Modified-Since和Etag / If-None-Match),協(xié)商緩存由服務(wù)器決定是否使用緩存,若協(xié)商緩存失效,那么代表該請(qǐng)求的緩存失效,返回200,重新返回資源和緩存標(biāo)識(shí),再存入瀏覽器緩存中;生效則返回304,繼續(xù)使用緩存。
    看到這里,不知道你是否存在這樣一個(gè)疑問:如果什么緩存策略都沒設(shè)置,那么瀏覽器會(huì)怎么處理?
    對(duì)于這種情況,瀏覽器會(huì)采用一個(gè)啟發(fā)式的算法,通常會(huì)取響應(yīng)頭中的 Date 減去 Last-Modified 值的 10% 作為緩存時(shí)間。
    七、實(shí)際場(chǎng)景應(yīng)用緩存策略
    1.頻繁變動(dòng)的資源
    Cache-Control: no-cache
    對(duì)于頻繁變動(dòng)的資源,首先需要使用Cache-Control: no-cache 使瀏覽器每次都請(qǐng)求服務(wù)器,然后配合 ETag 或者 Last-Modified 來驗(yàn)證資源是否有效。這樣的做法雖然不能節(jié)省請(qǐng)求數(shù)量,但是能顯著減少響應(yīng)數(shù)據(jù)大小。
    2.不常變化的資源
    Cache-Control: max-age=31536000
    通常在處理這類資源時(shí),給它們的 Cache-Control 配置一個(gè)很大的 max-age=31536000 (一年),這樣瀏覽器之后請(qǐng)求相同的 URL 會(huì)命中強(qiáng)制緩存。而為了解決更新的問題,就需要在文件名(或者路徑)中添加 hash, 版本號(hào)等動(dòng)態(tài)字符,之后更改動(dòng)態(tài)字符,從而達(dá)到更改引用 URL 的目的,讓之前的強(qiáng)制緩存失效 (其實(shí)并未立即失效,只是不再使用了而已)。
    在線提供的類庫(kù) (如 jquery-3.3.1.min.js, lodash.min.js 等) 均采用這個(gè)模式。
    八、用戶行為對(duì)瀏覽器緩存的影響
    所謂用戶行為對(duì)瀏覽器緩存的影響,指的就是用戶在瀏覽器如何操作時(shí),會(huì)觸發(fā)怎樣的緩存策略。主要有 3 種:
    ? 打開網(wǎng)頁,地址欄輸入地址: 查找 disk cache 中是否有匹配。如有則使用;如沒有則發(fā)送網(wǎng)絡(luò)請(qǐng)求。
    ? 普通刷新 (F5):因?yàn)?TAB 并沒有關(guān)閉,因此 memory cache 是可用的,會(huì)被優(yōu)先使用(如果匹配的話)。其次才是 disk cache。
    ? 強(qiáng)制刷新 (Ctrl + F5):瀏覽器不使用緩存,因此發(fā)送的請(qǐng)求頭部均帶有 Cache-control: no-cache(為了兼容,還帶了 Pragma: no-cache),服務(wù)器直接返回 200 和最新內(nèi)容。
    關(guān)于Cookies和有/無狀態(tài)的關(guān)系,如果把有狀態(tài)、無狀態(tài)理解成相同的請(qǐng)求是否返回相同的結(jié)果,那么要讓某個(gè)HTTP服務(wù)器有狀態(tài),真的需要Cookies嗎?不需要對(duì)不對(duì)?只需要大家都共享一個(gè)全局狀態(tài)就行了,比如說首頁上有一個(gè)訪問計(jì)數(shù)器“您是第XXXX個(gè)訪問本頁的用戶”,每訪問一次這個(gè)計(jì)數(shù)器就加1,誰訪問都加1,這從剛才的理解來說也是“有狀態(tài)”,對(duì)不對(duì)?Cookies/Session的作用是創(chuàng)建和維護(hù)多組獨(dú)立的狀態(tài),而不是有狀態(tài)。這個(gè)狀態(tài)指的是后端服務(wù)的狀態(tài),而非HTTP協(xié)議本身的狀態(tài)。所以說,HTTP協(xié)議是無狀態(tài)的協(xié)議,這個(gè)其實(shí)跟服務(wù)的狀態(tài)是無關(guān)的。一個(gè)服務(wù)不管使用何種協(xié)議,都可以在服務(wù)層面上是有狀態(tài)的,因?yàn)檫@和通信協(xié)議無關(guān),只需要它在響應(yīng)請(qǐng)求時(shí)改變自己的狀態(tài)即可,例如有一個(gè)Shutdown命令可以直接關(guān)掉整個(gè)服務(wù)器不再接受響應(yīng),那么它無論如何都是有狀態(tài)的對(duì)吧。所以說,服務(wù)本身有沒有狀態(tài)、支不支持會(huì)話,其實(shí)跟HTTP協(xié)議是否有狀態(tài)是無關(guān)的。
    1.cookie設(shè)置
    那 Cookie 是怎么設(shè)置的呢?簡(jiǎn)單來說就是

  • 客戶端發(fā)送 HTTP 請(qǐng)求到服務(wù)器
  • 當(dāng)服務(wù)器收到 HTTP 請(qǐng)求時(shí),在響應(yīng)頭里面添加一個(gè) Set-Cookie 字段
  • 瀏覽器收到響應(yīng)后保存下 Cookie
  • 之后對(duì)該服務(wù)器每一次請(qǐng)求中都通過 Cookie 字段將 Cookie 信息發(fā)送給服務(wù)器。
    Cookie 的作用
    Cookie 主要用于以下三個(gè)方面:
  • 會(huì)話狀態(tài)管理(如用戶登錄狀態(tài)、購(gòu)物車、游戲分?jǐn)?shù)或其它需要記錄的信息)
  • 個(gè)性化設(shè)置(如用戶自定義設(shè)置、主題等)
  • 瀏覽器行為跟蹤(如跟蹤分析用戶行為等)
    Cookie 的缺點(diǎn)
    1、隱私問題
    大多數(shù)用戶主要關(guān)心的是隱私。啟用Cookie的Web瀏覽器會(huì)跟蹤您訪問過的所有網(wǎng)站。這意味著,經(jīng)許可(或不在Google的情況下),第三方可以訪問這些cookie存儲(chǔ)的信息。在某些情況下,這些第三方可以是廣告商,其他用戶。。。。
    2、不安全
    Cookie安全性是一個(gè)大問題,因?yàn)樗鼈兪且悦魑男问酱鎯?chǔ),可能會(huì)造成安全風(fēng)險(xiǎn),因?yàn)槿魏稳硕伎梢源蜷_并篡改cookie。
    Cookie容易在客戶端被發(fā)現(xiàn)意味著它們很容易被黑客入侵和修改。
    3、難以解密
    我們可以手動(dòng)加密和解密cookie,但由于加密和解密所需的時(shí)間,它需要額外的編碼并影響應(yīng)用程序性能。
    4、大小有限制,只能儲(chǔ)存簡(jiǎn)單字符串信息
    cookie文本的大小(一般為4kb),cookie的數(shù)量(一般每個(gè)站點(diǎn)20個(gè))存在一些限制,每個(gè)站點(diǎn)只能容納20個(gè)cookie。
    Cookie僅限于簡(jiǎn)單的字符串信息,他們無法存儲(chǔ)復(fù)雜的信息。
    5、可以被禁用
    用戶可以選擇從瀏覽器設(shè)置中禁用其計(jì)算機(jī)上的cookie。這意味著用戶可以決定不在他的瀏覽器上使用cookie,這可能會(huì)在瀏覽器的運(yùn)行中產(chǎn)生一些問題。
  • 6、可以被刪除
    用戶可以從其計(jì)算機(jī)中刪除cookie,這使他們可以更好地控制cookie。

    總結(jié)

    以上是生活随笔為你收集整理的前端知识总结之浏览器知识的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    永久免费毛片在线观看 | 国产色综合 | 国产视频精选 | 亚洲久草在线视频 | 国产精品观看在线亚洲人成网 | 日韩欧美在线一区二区 | 久久爱资源网 | 黄网站色 | 中文字幕免费高 | 日韩xxxx视频 | 色婷婷一| 在线91色 | 国产成人精品一区二三区 | 久久电影网站中文字幕 | 免费a v观看 | 亚洲精品国产免费 | 午夜精品视频免费在线观看 | 日韩精品视频免费 | 国产中文在线字幕 | 曰韩精品 | 九九一级片| 欧美日韩在线观看一区二区三区 | 亚洲精品综合一二三区在线观看 | 成人久久免费视频 | 国产在线一区二区三区播放 | 久久国产精品系列 | 亚洲激情五月 | 青青河边草免费 | 久久久影视 | 国产一区自拍视频 | 成人国产亚洲 | 亚洲一级黄色片 | 久久成人在线 | 最近中文字幕大全 | 欧美午夜理伦三级在线观看 | 国产91精品在线播放 | 黄色三级网站在线观看 | 深夜免费网站 | 日韩欧美久久 | 91九色porny在线| 天天骚夜夜操 | 伊人五月天 | 天天夜操 | 免费在线国产视频 | 国产精品久久久免费看 | 色婷婷综合久久久 | 久草久| 婷婷在线视频 | 久久综合狠狠综合久久狠狠色综合 | 日本中文不卡 | 日韩在线观看电影 | 就操操久久 | 色多多视频在线 | 国产人成免费视频 | 色综合久久久久久久久五月 | 97成人超碰 | 在线电影 一区 | 国产丝袜高跟 | 国内精品久久久久久久久久久久 | 天天天干天天天操 | 亚洲高清在线观看视频 | 欧美国产亚洲精品久久久8v | 国产亚洲精品bv在线观看 | 久久福利精品 | 97在线观看免费视频 | 激情网站五月天 | 天天综合网在线 | www.久艹| 伊人电影在线观看 | 天天操天天艹 | 国产精品福利小视频 | 免费日韩一区二区 | 久草网在线视频 | 欧美性大战久久久久 | 亚洲综合情 | 日本一区二区三区免费看 | 成 人 黄 色 视频播放1 | 国产亚洲免费的视频看 | 亚洲黄污| 婷婷色婷婷 | 欧美日比视频 | 天天插天天射 | 欧美xxxxx在线视频 | 日韩国产精品一区 | 国产综合久久 | 国产视| 中文有码在线 | 天天摸天天舔天天操 | 午夜美女福利直播 | 日韩欧美xx| 五月综合激情网 | 国产日产精品久久久久快鸭 | 99久久精品国产系列 | 亚洲人人精品 | 18+视频网站链接 | 亚洲精品午夜久久久 | 色欧美日韩 | 国产偷v国产偷∨精品视频 在线草 | 欧美一进一出抽搐大尺度视频 | 婷婷六月天丁香 | 91精品啪在线观看国产 | 一区二区三区四区五区六区 | 免费看一级黄色大全 | 婷婷射五月 | 在线亚洲人成电影网站色www | av夜夜操 | 在线观看中文字幕2021 | 91大神免费在线观看 | 精品 一区 在线 | 99免费在线视频 | 欧美日韩在线视频一区二区 | 国产免费观看久久黄 | 97超碰人人澡人人爱学生 | 婷婷5月激情5月 | 激情婷婷在线 | 亚洲国产精品久久久久久 | 欧美激情视频三区 | 91精品国产综合久久婷婷香蕉 | 91精品免费在线观看 | 久草在线视频精品 | 99精品小视频 | 久久久99精品免费观看 | 国产91全国探花系列在线播放 | 国产一级做a爱片久久毛片a | 不卡av电影在线观看 | 日韩欧美视频二区 | 中文乱码视频在线观看 | 国产99re| 亚洲精品合集 | 日韩国产欧美在线视频 | 亚洲欧美日韩精品一区二区 | 中文字幕在线观看免费高清电影 | 久久黄色a级片 | 国产成人性色生活片 | 国产裸体视频网站 | 国产精品扒开做爽爽的视频 | 91在线看网站 | 激情深爱.com | a级片在线播放 | 欧美一区二区三区在线播放 | 狠狠色丁香婷婷综合欧美 | 国产成人久久久久 | 婷婷婷国产在线视频 | 日本二区三区在线 | 91视频在线免费下载 | 欧美另类色图 | 久久久久久久久久久久亚洲 | 免费av高清 | 国产亚洲精品女人久久久久久 | 久久精品福利 | 欧美精品在线观看免费 | 极品久久久 | 国产中文字幕视频在线观看 | 2017狠狠干| 亚洲精品国产精品国自产观看浪潮 | 丝袜美腿在线播放 | 人人爽夜夜爽 | 亚洲精品国产拍在线 | 国产精品九九久久久久久久 | 色婷婷 亚洲 | 伊人伊成久久人综合网小说 | 黄色av一区二区三区 | 99c视频在线| 午夜精品久久久久久99热明星 | 日韩精品无码一区二区三区 | 在线观看视频国产一区 | 欧美一区二区日韩一区二区 | 日韩在线视频国产 | 欧美日韩在线观看不卡 | 九九九热精品免费视频观看 | 伊人www22综合色 | 国产精品ⅴa有声小说 | 国产又粗又猛又黄视频 | 欧洲精品二区 | 国产午夜精品一区二区三区欧美 | 在线观看亚洲精品 | 亚洲成人软件 | 热久在线| 日韩欧美精品免费 | 精品久久久久久久久久久院品网 | 日韩啪啪小视频 | 亚洲最新视频在线播放 | 在线亚洲小视频 | 在线亚洲精品 | 国产小视频你懂的在线 | 美女在线免费观看视频 | 91人人爽人人爽人人精88v | av电影中文字幕在线观看 | 国产精品一区二区久久精品爱涩 | 日韩在线播放av | 国产精品毛片久久久久久久 | 亚洲精选国产 | 爱av在线网 | 久久久国产毛片 | 久久精品成人 | 欧美日韩在线观看一区二区三区 | 欧美不卡视频在线 | 日韩av一区二区三区四区 | 一区在线观看视频 | 麻豆精品视频在线观看免费 | 日韩一区在线免费观看 | 欧美日韩精品国产 | 午夜精品一区二区三区免费 | 日韩欧美一级二级 | 最新久久久 | 综合在线亚洲 | 国产大片免费久久 | 亚洲精品视频网 | 一区二区三区在线观看免费视频 | 国产999久久久 | 久久久精品国产免费观看同学 | 天天玩天天干天天操 | 九九av | 开心激情婷婷 | 国产精品va| 精品国产伦一区二区三区观看方式 | 亚洲综合在线观看视频 | 天天综合在线观看 | 中文字幕黄色网址 | 国产高清视频在线播放一区 | 欧美激情xxxx| 亚洲美女免费精品视频在线观看 | 国产少妇在线观看 | 99视频一区 | 81国产精品久久久久久久久久 | 日本高清中文字幕有码在线 | 国产精品一区二区av日韩在线 | 91精品夜夜| 国产韩国日本高清视频 | 久久久久影视 | 国产97碰免费视频 | 久久99久| 久久久精品国产一区二区三区 | 97超碰总站 | 久久影院午夜论 | 久久精品99国产精品酒店日本 | 国产成人精品亚洲a | 国产一级电影 | 久久综合国产伦精品免费 | 日韩在线中文字幕 | 欧美精品久久久久久久久久白贞 | 4438全国亚洲精品观看视频 | 人人爽人人搞 | 久久免费毛片 | 精品国内 | 中文字幕欧美三区 | 久久久99精品免费观看app | 亚洲精品国久久99热 | 在线免费av网 | 国产69久久 | 亚洲 成人 一区 | 欧美黑人猛交 | 国产黄色成人 | 婷婷激情在线观看 | 亚洲综合色播 | 国产午夜一级毛片 | 国产精品欧美久久久久无广告 | 国产精品淫 | 九月婷婷人人澡人人添人人爽 | 亚洲美女免费精品视频在线观看 | 中文字幕在线观看第三页 | 国产手机视频 | 亚洲国产69 | 久久兔费看a级 | 日韩久久久久久久 | 精品久久国产精品 | 欧美日韩精品在线免费观看 | 最新成人在线 | 久久精品视频国产 | 激情五月六月婷婷 | 国产亚洲精品久久久网站好莱 | 亚洲精品女人久久久 | 国产一级精品绿帽视频 | 成年人免费在线观看 | 欧美最爽乱淫视频播放 | 国产 色| 99久久精品网 | 久久久久免费精品视频 | 在线观看黄色av | 国产精品一区二区久久久 | 亚洲精品午夜国产va久久成人 | 97视频人人免费看 | 亚洲精品免费在线观看视频 | 四虎小视频 | 黄色片网站免费 | 日韩精品在线观看av | 97人人超碰在线 | 国产精品无av码在线观看 | 欧美久久成人 | 奇人奇案qvod | www国产一区 | 四虎国产精品永久在线国在线 | 欧美日韩免费观看一区=区三区 | 最近日韩免费视频 | 久久精品视频免费播放 | 91精品国产综合久久福利不卡 | 国产精彩在线视频 | 91麻豆精品国产91久久久更新时间 | 成人影片在线播放 | 亚洲视频在线观看 | 综合网色 | 亚洲综合在线播放 | 国产一卡二卡在线 | 美女免费视频观看网站 | 福利一区在线视频 | 99久久久久国产精品免费 | 国产精品理论视频 | 亚洲国产剧情 | 在线亚洲人成电影网站色www | 中文字幕免费高清在线 | 天堂在线一区 | 日韩中文字幕免费看 | 免费三级网 | 日本黄色片一区二区 | 干干日日| 国产资源在线观看 | 亚洲无毛专区 | 久久玖 | 成人一区二区三区在线观看 | 婷婷激情在线 | 久久精品激情 | 碰超在线观看 | 在线看v片 | 国产精品片 | 亚州av网站 | 精品少妇一区二区三区在线 | 人人狠狠综合久久亚洲 | 日韩mv欧美mv国产精品 | 国产亚洲精品久久久久久无几年桃 | 91福利试看| 九九九在线观看视频 | 在线观看国产www | 四虎影视成人永久免费观看亚洲欧美 | 超碰在线资源 | 欧美男同视频网站 | 开心激情婷婷 | 亚洲成人黄色在线观看 | 亚洲电影院 | 日p在线观看 | 国产精品门事件 | 日批网站免费观看 | 99热精品国产 | 久艹视频在线免费观看 | 欧美在线视频日韩 | 国产一区在线视频 | 午夜精品在线看 | 亚洲午夜不卡 | 在线免费观看一区二区三区 | 亚洲乱码一区 | 操操操com| 最近日本mv字幕免费观看 | 夜添久久精品亚洲国产精品 | 欧美亚洲成人xxx | 精品播放 | 亚洲国产欧美一区二区三区丁香婷 | 天天搞天天干天天色 | 国产精品综合在线观看 | 欧美日韩亚洲在线观看 | 亚洲视频大全 | 9999精品免费视频 | 18久久久| 久久久91精品国产一区二区三区 | 亚洲精品1区2区3区 超碰成人网 | 日韩久久久久久久 | 狠狠躁夜夜av | 亚洲综合激情网 | 婷婷色在线播放 | 国产精品嫩草在线 | 成全在线视频免费观看 | 亚洲精品国偷拍自产在线观看蜜桃 | 嫩嫩影院理论片 | 免费三级av| 在线成人欧美 | 婷婷丁香六月天 | 高清av在线 | 国产免费叼嘿网站免费 | 99精品黄色片免费大全 | 午夜资源站 | 日韩欧美视频免费观看 | 麻豆av一区二区三区在线观看 | 国产中文字幕亚洲 | 97超碰国产在线 | 免费三级黄 | 久久亚洲精品国产亚洲老地址 | 天天综合天天综合 | 91人人人| 国产精品免费看久久久8精臀av | 国内精自线一二区永久 | 欧美精品少妇xxxxx喷水 | 粉嫩高清一区二区三区 | 最新av免费在线 | 天天操天天操天天操天天 | 久久久综合精品 | 青春草视频在线播放 | 91毛片在线| 91入口在线观看 | 免费在线播放 | 成人在线视频你懂的 | 24小时日本在线www免费的 | 日韩精品亚洲专区在线观看 | 国产大陆亚洲精品国产 | 天堂av网址 | 天天爱天天操天天射 | 精品久久久久一区二区国产 | 国产v欧美 | 国产精品999久久久 久产久精国产品 | 黄色综合 | 又污又黄网站 | 欧美日韩精品在线一区二区 | 青青河边草免费直播 | 一区二区精 | 欧美日韩中文在线视频 | 蜜臀aⅴ国产精品久久久国产 | 8x成人免费视频 | 天天射天天拍 | 日韩一区二区三免费高清在线观看 | 成+人+色综合 | 亚洲精品久久久久久中文传媒 | 欧美一级看片 | 亚洲欧美偷拍另类 | 国产精品白浆视频 | 亚洲伦理中文字幕 | 免费一级特黄毛大片 | bbbbb女女女女女bbbbb国产 | 亚洲欧美视屏 | 少妇性bbb搡bbb爽爽爽欧美 | 日韩美女久久 | 九九综合久久 | 国产日本亚洲高清 | 国产一区二区三区高清播放 | 99精品视频播放 | 韩日电影在线免费看 | 久久艹人人 | 一区二区中文字幕在线 | 中文字幕在线中文 | 精品国产伦一区二区三区观看方式 | 欧美日韩成人一区 | 狠狠狠干 | 九九久 | 99久久精品免费看国产四区 | 亚洲高清国产视频 | 日韩av一区二区三区四区 | 欧洲一区二区三区精品 | 国产午夜一区二区 | 久久99国产综合精品免费 | 日本精品午夜 | 国产999精品久久久影片官网 | 亚洲无线视频 | a视频在线观看 | 久久激情视频免费观看 | 麻豆91视频 | 日韩理论片| 又粗又长又大又爽又黄少妇毛片 | 日韩av三区 | 在线播放国产一区二区三区 | 亚洲狠狠干 | 在线免费色视频 | 欧美精品免费在线观看 | 激情综合色综合久久综合 | 九九精品毛片 | 91久久黄色 | 日本不卡一区二区 | 久久爱影视i | 懂色av一区二区在线播放 | 国产在线色站 | 最新国产精品久久精品 | 中文字幕日本特黄aa毛片 | 久久人人看 | 免费观看国产视频 | 欧美视频www | 午夜精品久久久久久久99热影院 | 在线影视 一区 二区 三区 | 激情综合网婷婷 | 国产精品不卡在线播放 | 美国av片在线观看 | 婷婷亚洲综合五月天小说 | av电影不卡| 婷婷日日 | 欧美久久久久久久久中文字幕 | 国产高清中文字幕 | 亚洲成人一二三 | 日韩精品免费在线观看 | 国内精品久久久久久久久久久 | 天天色婷婷 | 亚洲欧美日韩一区二区三区在线观看 | 国产电影黄色av | 黄色网大全 | 麻豆视频免费在线 | 久久夜色精品国产欧美一区麻豆 | 夜夜操网站 | 国产成人三级在线播放 | 久99久中文字幕在线 | 国产精品成人自产拍在线观看 | 国产精品自产拍在线观看 | 久久久噜噜噜久久久 | 色欧美视频 | 国产精品v欧美精品v日韩 | 综合网中文字幕 | 99精品毛片 | 在线 影视 一区 | 日韩在线观看第一页 | 精品美女久久 | 亚洲激情六月 | 亚洲日韩欧美一区二区在线 | 手机av在线免费观看 | 日韩一区二区久久 | www.av在线播放 | 亚洲欧美成人在线 | av电影av在线 | 一区二区 精品 | 色婷婷精品大在线视频 | av黄色在线观看 | 手机在线永久免费观看av片 | 欧美精品三级在线观看 | 人人干狠狠干 | 国产丝袜 | 久久99国产精品自在自在app | 中文字幕黄色网址 | 日韩免费播放 | 精品色综合 | 精品美女国产在线 | 99精品国产免费久久久久久下载 | 色婷婷激情网 | 99色免费 | 婷婷丁香自拍 | 亚洲成人免费观看 | 在线看片中文字幕 | 亚洲免费观看在线视频 | 成年人黄色大片在线 | 偷拍精偷拍精品欧洲亚洲网站 | 精品av网站| 日韩av影视在线观看 | 不卡电影免费在线播放一区 | 国产一区影院 | 99超碰在线观看 | 国产成人三级三级三级97 | 亚洲免费不卡 | 91男人影院| 日韩午夜av| 亚州av网站 | 亚洲一二三在线 | 亚洲视频播放 | 五月婷婷在线视频观看 | 久久蜜臀av | 97国产精品一区二区 | 一区二区三区高清不卡 | 992tv又爽又黄的免费视频 | 欧美日韩精品在线观看 | 在线日本看片免费人成视久网 | 成人国产精品入口 | 国产精品久久久久久久久久三级 | 国产资源免费在线观看 | 久久久精品小视频 | 青青视频一区 | 中文字幕第一页在线播放 | 欧美一级艳片视频免费观看 | 国产精品综合久久久久 | 婷婷视频在线播放 | 91传媒视频在线观看 | 久久视频在线观看中文字幕 | 久久久久欧美精品 | 免费看的黄色 | 在线观看不卡视频 | 韩日av一区二区 | 黄色小说网站在线 | 天天色成人网 | 婷婷六月色 | 狠狠干夜夜爱 | 欧美一区三区四区 | 免费久草视频 | 人人干人人超 | 久久国产精品一国产精品 | 国产少妇在线观看 | 中文字幕 欧美性 | 亚洲免费精品一区二区 | 亚州精品在线视频 | 91探花在线视频 | 国产福利在线不卡 | 久久9精品 | 国产精品久久电影观看 | 99热精品免费观看 | 国产成人一区二 | 91麻豆精品久久久久久 | 99在线免费观看视频 | 日本性xxx | 婷婷久久久 | 色www免费视频 | 久久99精品久久久久久三级 | 久久国语露脸国产精品电影 | 久久乐九色婷婷综合色狠狠182 | 日韩理论在线 | 国产精品久久久99 | 亚洲成人黄色网址 | 国产三级精品三级在线观看 | 国产精品一区二区电影 | 黄色网在线免费观看 | 欧美激情视频一区二区三区 | 久久久91精品国产 | 国产精品久久久网站 | 国产精品中文久久久久久久 | 欧美日韩国产在线观看 | 岛国精品一区二区 | 免费看黄视频 | 五月婷婷激情网 | 久久精品欧美 | 免费看成人av | 99热超碰在线| 国产夫妻性生活自拍 | 中文字幕高清在线播放 | 西西www4444大胆在线 | 91资源在线视频 | 国产小视频在线免费观看视频 | 国产精品一区二区三区四区在线观看 | 成人午夜精品久久久久久久3d | 黄色精品久久 | 黄色一级免费 | 国产中文自拍 | 91九色porny在线 | 国产精品午夜8888 | 毛片一级免费一级 | 欧美污网站 | av 在线观看 | 一本一本久久a久久精品综合小说 | 在线亚洲人成电影网站色www | 国产黄色免费看 | 91精品免费在线 | 亚洲精品xx | 国产精品欧美一区二区三区不卡 | 国内外成人免费在线视频 | 日本中文字幕电影在线免费观看 | 欧美9999 | 婷婷激情5月天 | 天天天干夜夜夜操 | 91麻豆精品国产91久久久无需广告 | 欧美精品免费在线观看 | 久久精品超碰 | 免费看片网址 | 久草在线视频精品 | 日韩欧美国产免费播放 | 99热手机在线观看 | 在线观看视频日韩 | 天天操欧美 | 一区久久久 | 激情综合网色播五月 | 久久久久久视频 | 亚洲天堂香蕉 | 婷久久 | 日日摸日日| 揉bbb玩bbb少妇bbb | 日韩欧美视频一区二区 | 成人小视频在线免费观看 | 在线看国产视频 | 日韩精品久久久久久久电影竹菊 | 久草久热 | 狠狠躁夜夜躁人人爽超碰91 | 色婷婷狠狠五月综合天色拍 | 日韩欧美一区二区三区在线 | 国产精品成人在线 | 在线日韩一区 | 国产精品免费麻豆入口 | 日韩精品一区在线观看 | 国产在线小视频 | 日韩精品一区电影 | 国产黄色片久久久 | 91九色视频在线播放 | 成人网在线免费视频 | 国产手机视频在线观看 | 国产在线不卡一区 | 91精选在线 | 国产精成人品免费观看 | 欧美国产高清 | 天天se天天cao天天干 | 久久精美视频 | 日韩三级成人 | 成人蜜桃视频 | 国产小视频你懂的在线 | 在线观看精品黄av片免费 | 97电影手机 | 久草网免费 | 91av免费看| 亚洲免费在线 | av不卡免费在线观看 | 国产精品日韩欧美 | 精品久久久久久久久亚洲 | 国产在线高清视频 | 精品国产伦一区二区三区观看方式 | 91免费国产在线观看 | 亚洲第一香蕉视频 | 日韩手机在线 | 日韩精品免费一区二区在线观看 | 中文字幕在线看视频国产中文版 | 一区二区三区日韩视频在线观看 | 亚洲国产成人精品在线观看 | 国产在线观看网站 | 超碰在线人 | 成人免费观看视频网站 | 欧美日韩天堂 | 波多野结衣最新 | 精品一区电影国产 | 6699私人影院| 久艹视频在线免费观看 | 人操人 | 国产成人精品一区二区三区福利 | 日韩a在线观看 | 成人久久久久久久久 | 在线观看亚洲免费视频 | 精品女同一区二区三区在线观看 | 天天色天天综合网 | 性色av一区二区三区在线观看 | 黄色小说在线免费观看 | 国产亚洲精品久久久久久久久久久久 | 日韩免费av在线 | 久一网站 | 成人在线免费视频观看 | 91大神电影 | 手机在线黄色网址 | 色开心| 福利视频一区二区 | 中文字幕亚洲精品在线观看 | 在线观看中文字幕一区 | 在线观看黄网 | 97在线观看免费高清完整版在线观看 | 国产精品 日本 | 免费h漫在线观看 | 国内精品国产三级国产aⅴ久 | 日韩欧美大片免费观看 | 99久久这里只有精品 | 国产原创在线观看 | 天天干天天操天天搞 | 久久久国产毛片 | 天天操天天草 | 久久久精品网 | 欧美一区影院 | 国产91免费看 | 天天舔天天射天天操 | 九九免费在线观看 | 成人欧美在线 | 人人天天夜夜 | 日韩av影视 | 四虎影视欧美 | 亚洲最新av | 正在播放久久 | 欧美一级片播放 | 国产成人精品一区二区三区免费 | 人人爽人人澡人人添人人人人 | 日韩免费一区二区在线观看 | 免费手机黄色网址 | 日韩免费观看一区二区 | 久久免费av电影 | 911国产精品 | 999久久久免费视频 午夜国产在线观看 | 友田真希av | 中文在线资源 | 亚洲视频在线免费看 | 久久久影院| 成人免费共享视频 | 精品999| 成人97人人超碰人人99 | 精品国产一区二区三区久久久蜜月 | 亚洲欧美视频在线观看 | 久久精品久久综合 | 天天干天天看 | 欧美色综合天天久久综合精品 | 免费国产在线精品 | 日韩av五月天 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 国产97视频 | 久久全国免费视频 | 成人精品国产 | 人人涩 | 欧美一级在线观看视频 | 日韩大片在线 | 午夜在线资源 | 成人午夜在线观看 | 国产久草在线观看 | 视频一区在线免费观看 | 久久精品欧美一区 | 97碰在线视频 | 国内一区二区视频 | 久久久精品电影 | 韩国一区视频 | 国产精品第52页 | 成人av电影在线播放 | 成人国产精品免费观看 | 亚洲乱码精品久久久 | 三级黄色网络 | 日韩中文字幕亚洲一区二区va在线 | 伊人五月 | 国产黄色在线网站 | 四虎小视频 | 久草在线播放视频 | 日本最新一区二区三区 | 91亚洲精品乱码久久久久久蜜桃 | av在线成人 | 欧美久久99 | 91在线播放综合 | 成人免费观看视频网站 | 在线一区观看 | 9在线观看免费 | 国产成人久久 | 国产成人三级在线播放 | 色橹橹欧美在线观看视频高清 | av3级在线 | 日韩精品无码一区二区三区 | 国产亚洲精品福利 | 久久涩视频| 天天视频色版 | 99久久久久久久久久 | 中文字幕成人 | 亚洲欧美婷婷六月色综合 | 特级毛片在线 | 国产亚洲一区二区三区 | 日韩网 | 色5月婷婷 | 国内精品久久久久国产 | 一级黄色免费网站 | 国产成人精品av在线 | 狠狠狠狠狠狠天天爱 | 在线观看视频在线观看 | 五月婷婷综合激情网 | 欧美精品久久久久 | 特黄色大片 | 久久久精选 | www.91国产 | 久久久噜噜噜久久久 | 香蕉视频4aa | 国产精品99久久久久久小说 | 国产一区二区不卡视频 | 天天操天天干天天爽 | 婷婷久久国产 | 日韩高清无线码2023 | 99精品欧美一区二区三区 | 97成人在线观看视频 | 中文国产成人精品久久一 | www麻豆视频 | 99久久久久成人国产免费 | 日韩一区二区三区高清在线观看 | 干av在线 | 婷婷丁香花五月天 | 欧美日韩一区二区三区在线免费观看 | 国产免费黄视频在线观看 | 日韩精品一区电影 | 在线黄色毛片 | 国产精品久久久久一区二区国产 | 久久精品日产第一区二区三区乱码 | 久草在线观 | 国产亚洲亚洲 | 91精品视频一区二区三区 | 天天摸天天舔天天操 | 日本护士三级少妇三级999 | 美女久久久久久久 | 奇米先锋| 69国产精品视频 | 香蕉视频在线播放 | 99久久国产免费,99久久国产免费大片 | 天天草av | 亚洲小视频在线观看 | 成人在线小视频 | 99免费在线观看 | 日韩三级在线观看 | 日日干日日色 | 成人国产精品电影 | 国产精品一区二区果冻传媒 | 国产福利电影网址 | 亚洲精品永久免费视频 | 免费看一级黄色大全 | 2021国产在线视频 | a在线视频v视频 | 日韩在线欧美在线 | 国产又粗又硬又爽视频 | 亚洲一区网 | a在线视频v视频 | 天堂av在线网 | 黄色av高清| 丁香视频免费观看 | 亚洲美女视频在线观看 | 一本大道久久精品懂色aⅴ 五月婷社区 | 色婷婷综合久久久久 | 亚洲国产欧美一区二区三区丁香婷 | 久久激情五月丁香伊人 | av免费在线免费观看 | 一级精品视频在线观看宜春院 | 二区三区毛片 | 91九色精品 | 8x8x在线观看视频 | 中文字幕色婷婷在线视频 | 日韩一区二区三区高清免费看看 | 色诱亚洲精品久久久久久 | 欧美精品免费在线观看 | 天天色棕合合合合合合 | 少妇高潮流白浆在线观看 | 天天综合天天做天天综合 | 日产乱码一二三区别免费 | 99在线热播精品免费 | 欧美日本不卡高清 | 国产三级av在线 | av导航福利| 青青久草在线 | 日本中文字幕在线视频 | 日韩av电影国产 | www.激情五月.com | 18久久久| 色综合久久天天 | 不卡电影免费在线播放一区 | 亚洲国产视频网站 | 国产精品久99 | 九九色视频 | 国产精品一区二区三区在线看 | 免费特级黄色片 | 久精品视频在线 | 国产999精品| 天堂av在线网址 | 亚洲欧洲在线视频 | 欧美天堂影院 | 国产日韩在线视频 | 日韩精品短视频 | 国产999精品久久久久久麻豆 | 欧美日韩国产网站 | 日韩91精品 | 中文字幕永久 | 欧美精品黑人性xxxx | 日韩免费av片 | 亚洲一区二区三区精品在线观看 | 亚洲成人av片在线观看 | 久久色视频 | 国产午夜精品一区二区三区在线观看 | 日本丰满少妇免费一区 | 久草精品免费 | 999热视频| 日日日视频| 国产精品久久久久久久妇 | 狠狠干网址 | 97超碰资源网 | 特级xxxxx欧美| 天天碰天天操视频 | 五月激情视频 | 日日操日日干 | 日本亚洲国产 | 麻豆久久久久久久 | 伊人资源视频在线 | 久久最新网址 | 国产精品女人久久久 | www在线免费观看 | 亚洲综合一区二区精品导航 | 少妇bbb搡bbbb搡bbbb′ | 99热这里精品 | 久久久高清视频 | 综合影视 | 日韩国产精品久久久久久亚洲 | 在线观看日韩免费视频 | 在线观看国产日韩 | 色婷婷狠狠操 | 国产亚洲片 | 免费观看av网站 | 911精品视频 | 8090yy亚洲精品久久 | 久久久精品国产一区二区三区 | 天天操天天干天天操天天干 | 久热久草在线 | 色九九影院 | 久草在线视频在线观看 | 人人干网站 | 黄色成人av在线 | 国产日韩欧美在线免费观看 | 国产精品黄色 | 福利精品在线 | 久久艹人人| 久久免费视频5 | 国产精品久久久久永久免费看 | 中文在线a∨在线 | 涩涩资源网 | 欧美一区二区三区四区夜夜大片 | 丁香六月五月婷婷 | 最新日韩视频 | 99九九热只有国产精品 | 婷婷色婷婷 | 天天干,夜夜爽 | 四虎精品成人免费网站 | 久黄色 | 中文字幕在线免费看 | 欧美精品久久久久久久免费 | 婷婷色网 | 九九热在线视频 | 99久久久久久久 | 在线久草视频 | 亚洲精选99 | 成人免费在线播放 | 亚洲人成精品久久久久 | 亚洲片在线资源 | 国产精品精品国产色婷婷 | 久久久久久久久影院 | av成人在线电影 | 国产91影视 | 亚洲精品在线观 | 久久综合免费视频影院 | 国产极品尤物在线 | 国产精品成人av在线 | 欧美调教网站 |