精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何運用新技術提升網頁速度和性能

開發 前端
我們的目標是控制性能,注重性能,未來可伸展,為網站增添內容是一種樂趣。接著就來告訴你,為什么我們的網站速度比你們的快吧

最近更新了我們的網站,它是經過了設計上的全面驗收的。但實際上,作為軟件開發者,我們會注重很多技術相關的零碎的東西。我們的目標是控制性能,注重性能,未來可伸展,為網站增添內容是一種樂趣。接著就來告訴你,為什么我們的網站速度比你們的快吧(抱歉,確實是這樣的)。

性能設計

在我們的項目中,我們每天都會和設計師和產品負責人討論關于平衡美觀和性能的問題。對于我們自己的網站,這樣做是很簡單的。簡言之,我們認為好的用戶體驗從快速的內容傳輸開始,也就意味著 性能 > 美觀。

好的內容、布局、圖片和交互是吸引用戶的重要因素。這每個因素都會影響頁面的加載時間和終端用戶體驗。每一步我們都在探討如何在獲得好的用戶體驗和保證設計美感的同時,最小化對性能的影響。

內容優先

我們想要把核心內容盡快地呈現給用戶,意味著我們要處理好基本的 HTML 和 CSS。每個頁面都應該達到基本的目的:傳遞信息。JS、CSS、網頁字體、圖片、網站分析等優化都是位居于核心內容之下的。

可控性

給理想網站定義了標準后,我們總結出:要想達到預期效果,就要能對網站各方面的控制都游刃有余。我們選擇構建自己的靜態站點生成器,包括資源傳輸,并且由我們自己操控。

靜態站點生成器

我們用 Node.js 實現了靜態站點生成器。它是采用帶有簡短 JSON 頁面描述標簽的 Markdown 文件來生成整個網站結構和它所有的資源。為了包括特殊的頁面腳本,也可以附帶一個 HTML 文件。以下是一個簡單化的描述標簽和 markdown 文件,用于博客的發布,用它來生成真正的 HTML。

  1. JSON 描述標簽: 
  2.  
  3.   "keywords": ["performance""critical rendering path""static site""..."], 
  4.   "publishDate""2016-07-13"
  5.   "authors": ["Declan"

 markdown 文件:

  1. # Why our website is faster than yours 
  2. We've recently updated our site. Yes, it has a complete... 
  3.  
  4. ## Design for performance 
  5. In our projects we have daily discussions... 

圖片傳輸

平均一個 2406kb 的網頁中 1535kb 是圖片。就因為圖片在網站中占據了這么大的一個比例,所以它也是性能優化的重點之一。

 

WebP格式

WebP是一種現代圖片格式,為網頁圖片提供了出色的低損耗、有損壓縮。WebP格式的圖片實質上比其它格式的小,有時可以比同樣的 JPEG 圖片小 25%。 WebP被大多數人所忽略,也沒被經常使用。截止到寫這篇文章的時候,WebP 僅支持Chrome, Opera 和 Android (仍超過了我們50%的用戶),但我們可以優雅降級為 JPG/PNG。

使用 <picture> 元素我們可以把圖片從 WebP 優雅地降級到其它被廣泛支持的圖片格式,如JPEG:

  1. <picture> 
  2.   <source type="image/webp" srcset="image-l.webp" media="(min-width: 640px)"
  3.   <source type="image/webp" srcset="image-m.webp" media="(min-width: 320px)"
  4.   <source type="image/webp" srcset="image-s.webp"
  5.   <source srcset="image-l.jpg" media="(min-width: 640px)"
  6.   <source srcset="image-m.jpg" media="(min-width: 320px)"
  7.   <source srcset="image-s.jpg"
  8.   <img alt="Description of the image" src="image-l.jpg"
  9. </picture> 

 我們使用Scott Jehl 的 picturefill 來使那些不支持 <picture> 元素的瀏覽器獲得支持,在各個瀏覽器中達到一致的效果

我們使用 <img> 作為那些不支持 <picture> 或者 JS 的瀏覽器的后備元素。使用圖片的最大實例確保了它在后備方案中的可行性。

生成

盡管圖片傳輸方式已經確定了,我們仍需要思考該怎樣有效地執行。我喜歡 <picture> 元素的功能,但不喜歡寫上面那些代碼段,尤其是寫內容時必須把它加進去。我們不想做這么費力的事情:每張圖片都要寫 6 個實例,所以優化這些圖片并且把它們寫在markdown文件的 <picture> 里面。所以:

生成圖片

在構建過程中,原圖片的多個實例,包括JPG, PNG和WebP格式,我們使用 gulp responsive 來生成。

最小化圖片

在markdown文件中寫[圖片描述](image.jpg).

在構建過程中使用自定義Markdown渲染器來為已經完全成熟的 <picture> 元素編譯傳統的markdown圖片聲明。

SVG動畫

我們為自己的網站選擇了特定的圖標類型,其中SVG插圖占了主要地位。這樣做有以下幾個原因:

  • 首先,SVG的圖片比位圖更小;
  • 其二,SVG圖片本身就是響應式的,有很棒的伸縮性, 所以不需要圖片生成及 <picture> 元素;
  • 最后也是很重要的一點,就是我們可以通過CSS來不斷改變它,賦予它新的活力!我們所有的組合頁面都有一個自定義的動態SVG圖, 可以被概述頁面所復用。這張圖片作為我們所有組合頁面的一種循環風格,使得頁面設計一體化,同時又幾乎不會對性能造成影響。請看這張動畫,看看我們是如何用CSS來改變它的。

[[170658]]

 

自定義網頁字體

在深入之前,這里有一個關于在瀏覽器設置自定義字體的簡短介紹。當瀏覽器發現CSS里面有@font-face 的定義,但是用戶的電腦并不支持該字體時,它會嘗試下載該字體文件。在下載時,多數瀏覽器根本不會用這種字體來展示文本。這種現象稱為“不可見文本的閃現” 或者 FOIT。如果你有留意,你會發現網頁上都有這種情況存在。如果你問我,我會告訴你這會影響用戶體驗。它延遲了用戶讀取他們所需內容的時間。我們可以迫使瀏覽器改變這種行為,變成 “無樣式內容閃現” 或者稱為 FOUT。我們告訴瀏覽器先使用普通字體,像 Arial 或者 Georgia。當自定義的字體下載完成后,再代替標準字體并且重新渲染。這樣,即使自定義字體下載失敗,仍然不會影響內容的可讀性。然而,有人會認為這是一種妥協的做法,但我們認為自定義字體只是一種優化。盡管沒有自定義字體,網頁看起來也完好,也能百分百的正常運行。勾選/不勾選復選框來切換我們的網頁字體,來自己體驗一下:

切換下載的字體類

使用自定義網頁字體可以改善我們的用戶體驗,只要你能夠優化他們,并且負責任地為之服務。

字型子集設定

到目前為止,子集設定是改善網頁字體性能最快的方式。我將會向每個使用自定義字體的網頁開發者推薦它。如果你能完全控制網頁內容,并且知道它將要展示哪些特性的話,你可以完全使用子集設定。但是,即使是僅僅把字體設為西方語言,也會對文件大小造成很大的影響。例如,我們的 Noto Regular WOFF 字體,默認是246KB,將其設為西方語言后,大小下降到31KB。我們使用 Font squirrel webfont, 這種字體真的很易用。

字體監聽器

Bram Stein 推出的字體監聽器是一個很了不起的腳本,可以幫助檢查字體是否已被加載。至于你是如何加載字體的,是通過一個網頁字體服務,還是自己上傳就不可知了。在這個監聽器告訴我們所有自定義的字體已經下載完畢后,我們就可以在 <html> 元素上添加一個字體加載完畢的類,我們的頁面就會重新用新的字體:

  1. html { 
  2.    font-family: Georgia, serif; 
  3.  
  4. html.fonts-loaded { 
  5.    font-family: Noto, Georgia, serif; 

 注意: 為了簡短,我沒有給上面CSS中的 Noto 加上 @font-face 的聲明。

我們可以設定一個cookie來記住所有的字體已經被加載過,就可以讓他們緩存在瀏覽器里面了。我們使用這個cookie來做重復的瀏覽,這個我后續會解釋。

在不久的將來,我們或許不需要 Bram Stein 的腳本來監聽這個行為。CSS開發團隊已經提案一個新的 @font-face 描述器,也叫font-display。它的屬性值控制著一個可下載的字體是如何在還沒加載出來時就渲染頁面的。這是CSS對font-display的描述:它將帶給我們像上面方法一樣的行為效果。你可以讀讀更多關于 font-display 的屬性。

JS和CSS懶加載

一般來講,我們都是盡可能快的加載需要的資源。我們移除一些堵塞的請求來加快頁面渲染,優化首屏,用瀏覽器緩存來處理重復的頁面。

JS懶加載

設計上,我們的網站并沒有很多JS。我們發展了一個JavaScript工作流來處理我們目前已有的js, 以及未來會用到的js資源。

JS在 <head> 塊里面渲染,這是我們想要的。JS應該只是用來提高用戶體驗,不應該是訪問者需要的關鍵。處理JS堵塞渲染的簡單方法就是把腳本放在頁面的尾部。這樣網頁就會在整個HTML 渲染完畢后才去加載JS。

另一種可以把腳本放在 head 執行的方案是在 <script> 標簽里面添加 defer 屬性,來延遲腳本的執行。由于瀏覽器下載腳本是很快的,不會堵塞頁面渲染進程,等到頁面完全加載完,才會執行腳本里面的代碼。還有一件事,我們沒有使用像jQuery這些庫,所以我們的腳本取決于 vanilla 腳本的特性。我們只是想要在瀏覽器加載腳本來支持這些特性。最終的結果就像下面的代碼這樣:

  1. <script> 
  2. if ('querySelector' in document && 'addEventListener' in window) { 
  3.   document.write('<script src="index.js" defer><\/script>'); 
  4. </script> 

我們把這小段腳本放在頁面頭部,來檢測瀏覽器是否支持原生JavaScript的 document.querySelector 和 window.addEventListener屬性。如果支持,我們通過 <script> 標簽直接給頁面加載腳本,并使用 defer 屬性讓它不會堵塞頁面渲染。

懶加載CSS

對于首屏來講,網站最大的渲染堵塞資源就是CSS了。只有當 <head> 里面的CSS文件完全加載完畢時,瀏覽器才會開始渲染頁面。這種做法是經過深思熟慮的,若不是這樣,瀏覽器就需要在整個渲染過程中不斷重新計算布局尺寸,不斷重繪。

為了防止CSS堵塞渲染,我們就需要異步加載CSS文件。我們使用了 Filament Group 的 awesome loadCSS 函數。該函數提供了一個回調,當CSS文件加載完后,我們設置一個cookie來聲明CSS文件已經加載了。我們使用這個cookie來重現頁面,這一點我后續會解釋到。

CSS異步加載也帶來這樣一個問題,盡管 HTML 真的很快被渲染出來,但看起來就只有純粹的HTML,只有等到整個CSS文件加載完且停止時,才會有樣式。這時就要提到關鍵CSS了。

關鍵CSS

關鍵CSS就是阻塞瀏覽器渲染出用戶可識別的網頁的一小部分CSS。我們注意網頁的 上半版版面。很明顯,兩個設備的版面的位置有很大的區別。因此,我們做了一個大膽的猜測。

手動地檢測這部分關鍵性的CSS是個很耗時的過程,尤其是樣式、特性等不斷改變時。這里有幾個好的腳本,可以在你構建網頁時,生成關鍵性CSS。我們采用了 Addy Osmani 的版本。

下面是我們分別用關鍵性CSS和整份CSS分別渲染的頁面效果。注意到下半版仍然有部分內容還沒有樣式。

 

左側網頁是用關鍵CSS渲染的,而右側網頁則是用整份的CSS。紅線是分界線。

服務端

我們自己部署 de Voorhoede 網站,因為我們希望能夠控制服務器環境。我們也想要嘗試,是否可以通過改變服務端的配置來大大提升性能。當前我們使用了 Apache 服務和 HTTPS 協議。

配置

為了提升性能和安全性,我們研究了如何配置服務端。

我們使用 H5BP apache樣板配置,這個對于改善Apache網絡服務的性能和安全性是個很好的開始。他們也有其他服務器環境的配置。對于我們的大部分 HTML、CSS 和 JS,我們使用GZIP壓縮。對于我們的所有網站資源,都使用緩存HTTP標頭的做法。有興趣請閱讀文件層級緩存的章節。

HTTPS

用HTTPS來服務你的網站會對性能造成影響。這主要是設置了SSL握手,引入了大量潛在的東西。但通常情況下,我們可以做一些改變!

HTTP Strict Transport Security 是一個HTTP標頭,可以讓服務器告訴瀏覽器只能用HTTPS來與它交互。這種方式防止HTTP請求被重定向為HTTPS。所有嘗試用HTTP來訪問站點的請求都會被自動轉換成HTTPS。這樣就節省了一個來回。

TLS false start 允許客戶端在第一個TLS回合結束后,馬上向后端發送加密的數據。這種優化為一個新的TLS連接減少了握手次數。一旦客戶端知道了密鑰,就可以開始傳輸應用數據。剩下的握手用來確認是否有人篡改了握手記錄,并且可以并行處理。

TLS session resumption 通過確認瀏覽器和服務器是否已經取得聯系來幫我們節省一個來回。瀏覽器會記住這一次的標識符,下次發起連接時,這個標識符就會被重用,節省了一個來回。

我聽起來像是一個搞開發和運維的,但確實不是。我只是讀過一些書,看過一些視頻。我喜歡 Google I/O 2016 的 Mythbusting HTTPS:Emily Stark 的安全性都市傳奇。

cookies的使用

我們沒有用一門服務端的語言,只有靜態的 Apache 網絡服務。但一個 Apache 網絡服務仍可以做包括SSI在內的后端服務,并且讀取cookies。通過巧用cookies和運行那部分被Apache改寫的HTML,我們可以大大提升前端性能。下面這個例子就是了(我們實際的代碼比這個復雜點,但是思想上是一致的):

  1. <!-- #if expr="($HTTP_COOKIE!=/css-loaded/) || ($HTTP_COOKIE=/.*css-loaded=([^;]+);?.*/ && ${1} != '0d82f.css' )"--> 
  2.  
  3. <noscript><link rel="stylesheet" href="0d82f.css"></noscript> 
  4. <script> 
  5. (function() { 
  6.     function loadCSS(url) {...} 
  7.     function onloadCSS(stylesheet, callback) {...} 
  8.     function setCookie(name, value, expInDays) {...} 
  9.  
  10.     var stylesheet = loadCSS('0d82f.css'); 
  11.     onloadCSS(stylesheet, function() { 
  12.         setCookie('css-loaded''0d82f', 100); 
  13.     }); 
  14. }()); 
  15. </script> 
  16.  
  17. <style>/* Critical CSS here */</style> 
  18.  
  19. <!-- #else --> 
  20. <link rel="stylesheet" href="0d82f.css"
  21. <!-- #endif --> 

 Apache 服務端邏輯看起來像一行一行的備注,一般以 <!-- # 開始。我們一步一步來看下吧:

$HTTP_COOKIE!=/css-loaded/ 檢測是否存在CSS緩存cookie。

$HTTP_COOKIE=/.*css-loaded=([^;]+);?.*/ && ${1} != '0d82f.css' 檢測緩存的版本是不是當前所要的版本。

If <!-- #if expr="..." --> 如果是true的話,我們就假定這是用戶的第一次瀏覽。

第一次瀏覽我們添加了 <noscript> 標簽,里面放置了 <link rel="stylesheet">。之所以這樣做,是因為我們要異步加載整份CSS和JS。如果JS不能用的話,這種做法是不能執行的。這意味著,我們要用常規的加載CSS的方法來做回退。

我們添加了一個行內的腳本來懶加載CSS,onloadCSS 回調里面可以設置cookies.

在同一份腳本里面,我們異步加載了整份CSS。

在 onloadCSS的回調里面,我們用版本號來設置cookie的值。

在這個腳本后面,我們添加了一行關鍵CSS的樣式。這個會阻塞渲染,但時間是非常短的,而且可以避免頁面展示出來只有純粹的HTML而沒有樣式的情況。

<!-- #else --> 聲明(意味著 css-loaded 的cookie 已經存在)用戶重復瀏覽。因為我們可以從某種程度上來假定,CSS文件之前已經被加載過了,我們可以利用瀏覽器緩存來提供樣式表。這樣從緩存里面加載速度就很快了。同樣的方法也被用來在第一次異步加載字體,后續的重復瀏覽也是從緩存里面獲取字體。

 

這就是我們第一次和重復瀏覽時,我們用來區分的cookies。

文件級緩存

由于我們在重現頁面時很大程度上依賴于瀏覽器緩存,所以我們需要確認我們的緩存是否合理。理想中我們是要永遠的存儲資源(CSS、js、 字體、圖片),只有當這些文件被修改時才需要更新。當請求的URL是唯一時,緩存就會失效。每更新一個版本,我們都會用 git tag 打個標簽。所以最簡單的方式就是給我們請求的URL加上一個參數(代碼版本號),如https://www.voorhoede.nl/assets/css/main-8af99277a6.css?v=1.0.4.。

但是,這種做法的缺點就是當我們要寫一個新的博客post(這也是我們代碼庫的一部分,并沒有永久地存儲在CMS),原來緩存的資源將會失效,盡管沒有改變原來那些資源。

就在我們嘗試去改善這種方法時,我們發現了 gulp-rev 和 gulp-rev-replace 。這些腳本會自動合理地在我們的文件名稱后面添加一竄hash值。這意味著只有實際上文件被改變時,才會去改變請求的URL,這樣每個文件的緩存就會自動失效。這種做法讓我興奮不已啊!

結果

如果你看到這里,你應該是想要知道結果的。測試網頁的性能可以采用像 PageSpeed Insights 這樣的工具,它有很實用的提示。也可以使用 WebPagetest來測試,有擴展性的網絡分析。我認為測試網頁渲染性能的最好方法就是在瘋狂地遏制網絡通信時來觀察網頁的進程。這意味著,用一種不切實際的方法來遏制通信。在谷歌瀏覽器,你可以這樣操作 (via the inspector > Network tab) 來限制通信,觀察網頁形成過程中,請求是如何緩慢加載的。

下面是我們的網頁在 50KB/s 的情況下的加載狀況。

 

這是 de Voorhoede site 首屏的網絡分析,是網頁第一次進程的一個概覽。

注意到在50KB/s的網速中,我們是如何讓首屏的渲染只用了 2.27 秒的。也就是第一張幻燈片和瀑布圖里面的黃色線所代表的位置。黃線恰好繪在就是HTML已經加載完的時間位置。HTML包含了關鍵CSS,保證頁面的可觀性。所有其他的CSS都是用懶加載,所以我們可以等到全部資源加載完時才與頁面進行交互。這也是我們想要的效果!

另一個值得注意的就是自定義字體從來不在這緩慢的鏈接上加載。 font face 觀察器會自動注意到這一點。但是,如果我們不異步加載字體,你注視大多數瀏覽器,都會出現 FOIT(不可見文本的閃現,上文有提及)的情況。

所有的CSS文件僅在8s后就都加載完畢。相反,如果我們不采用加載關鍵CSS的方式,而是采用加載全部CSS,我們在前8秒看到的將會是空白的頁面。

如果你感到好奇,想與那些不太注重性能的網站對比一下加載時間,那趕緊試試吧。那個時間肯定是飛漲啊!

用上面介紹的工具測試了我們的網站,結果也是讓人滿意的。 PageSpeed insights 在移動性能方面給了我們100分,多么了不起啊!

PageSpeed insights 對 voorhoede.nl的測試結果! 速度100分!

當我們查看 WebPagetest 時,我們得到下面這樣的結果:

 

WebPagetest 對 voorhoede.nl的檢測結果

可以看出,我們的服務器運行良好,首屏的速度指標是693。 這意味著我們的頁面在693毫秒后就可以在寬屏纜線下被使用了。

技術路線

我們這樣還不算完成,還會不斷地重復我們的方法。我不久的將來,我們會主要關注以下內容:

HTTP/2

目前我們正在試驗HTTP/2。本文所描述的大多數東西都是基于 HTTP/1.1 權限內的最好實踐。簡言之,HTTP/1.1 要追述到1999年,那時 table布局和行內樣式都如火如荼。HTTP/1.1 從沒為 2.6MB的網頁要接受200個請求而設計。為了減輕舊版協議帶來的痛楚,我們結合JS、CSS、關鍵性CSS,還為小圖片設置數據源URI等。用各種方法來節省請求。自從 HTTP/2 可以在同一個TCP鏈接上平行地運行多個請求后,所有的這些聯結使用和減少請求的做法都可能成為反面模式了。當我們跑完這個實驗后,我們將會采用 HTTP/2 協議。

Service Workers

這是一個在后臺運行的現代瀏覽器的 JavaScript API。它擁有很多特性,這些特性在以前的網站上都是沒有的,如離線支持、消息推送、背景同步等。我們現在正嘗試用 Service Worker, 但還是得在我們自己的網站上實現先。我向你保證,我們會做到的!

CDN

因此,我們想要自己控制和部署我們的網站。而且現在我們也要采用CDN來擺脫由服務端和客戶端實際距離所帶來的網絡問題。盡管我們的用戶基本上都是荷蘭的,我們也想向世界的前端社區反映我們在質量、性能和推動網絡發展方面做的最好。

責任編輯:龐桂玉 來源: segmentfault
相關推薦

2025-03-10 00:00:50

2016-08-27 18:14:46

容器

2013-02-28 10:02:30

IBMPower7+技術

2023-10-26 08:33:16

Redis管道技術

2010-02-06 14:32:45

ibmdw

2009-04-13 11:20:46

IBMdWWeb

2021-12-10 11:39:42

數據保護數據泄露數字企業

2024-06-27 11:00:07

2017-09-19 14:28:06

Web開發網站

2024-12-10 00:00:05

2015-10-10 09:57:23

AMP谷歌網頁加載

2020-12-03 15:54:15

軟件開發工具

2014-07-31 09:35:57

2010-05-24 09:33:57

Anaphase

2009-04-20 08:59:49

Firefox性能測試瀏覽器

2021-11-11 20:49:22

數字化

2010-09-03 12:45:41

2015-09-17 10:23:04

新技術學習

2015-09-17 08:55:47

react學習技術

2024-03-27 15:27:47

點贊
收藏

51CTO技術棧公眾號

日韩欧美激情电影| 老司机午夜在线视频| 亚洲精品影院在线观看| 日韩av影视在线| 日韩一级在线免费观看| 蜜桃视频网站在线| 成人精品免费视频| 国产精品久久久久久婷婷天堂| 日韩三级久久久| 风间由美中文字幕在线看视频国产欧美| 欧美日韩一区二区在线播放| 亚洲综合五月天| 无码国产精品一区二区色情男同| 免费观看在线色综合| 欧美黑人一区二区三区| 亚洲午夜精品久久久久久高潮 | 97在线视频免费| 免费黄色片网站| 国产精品对白久久久久粗| 欧美日韩午夜精品| 亚洲人精品午夜射精日韩| a天堂中文在线88| 成a人片国产精品| 国产综合香蕉五月婷在线| 日韩少妇裸体做爰视频| 性欧美69xoxoxoxo| 亚洲奶大毛多的老太婆| 欧美激情第四页| 88xx成人免费观看视频库 | 亚洲精品白浆高清久久久久久| 999在线观看| 欧美艳星kaydenkross| 亚洲在线中文字幕| 一区二区日本| 国产人成在线视频| 91在线porny国产在线看| 亚洲伊人一本大道中文字幕| 在线播放成人av| 国产一区二区三区的电影| 欧美成人精品不卡视频在线观看| 蜜乳av中文字幕| 亚洲v天堂v手机在线| 日韩精品一区二区三区四区| 中文字幕在线视频一区二区三区| 久久野战av| 色婷婷激情一区二区三区| 欧美日韩一道本| a级片免费在线观看| 夜夜操天天操亚洲| 91九色国产ts另类人妖| 麻豆传媒在线完整视频| 国产精品国产三级国产aⅴ原创| 日韩电影免费观看高清完整| 你懂的免费在线观看视频网站| 99视频一区二区| 久99久在线| 无码精品黑人一区二区三区| 不卡在线视频中文字幕| 国产精品乱码| 日韩有码第一页| 成人激情视频网站| 国产精品一区二区三区在线观| 国产一区二区三区三州| 久久超碰97中文字幕| 成人两性免费视频| 国产又粗又猛又爽又黄91| 久久69国产一区二区蜜臀| 国产在线观看精品| 国产乱淫av片免费| 国产盗摄视频一区二区三区| 国产精品毛片一区视频| 手机在线观看免费av| 91免费版在线| 日韩亚洲视频在线| 成年人视频免费在线观看| 国产精品你懂的在线| 免费观看国产视频在线| 黄色美女视频在线观看| 精品国产成人在线| 成人三级视频在线播放 | 色婷婷久久99综合精品jk白丝| 欧美成人黑人猛交| 久久麻豆视频| 日韩欧美国产综合一区| 中文字幕乱码在线| 欧美人妖在线| 日韩小视频在线观看| 免费中文字幕视频| 国产一级久久| 国产美女直播视频一区| 亚洲va欧美va| 国产午夜精品美女毛片视频| 正在播放91九色| 大桥未久在线视频| 欧美伊人精品成人久久综合97| 中文字幕色网站| 88久久精品| 亚洲新中文字幕| 欧美日韩综合一区二区| 亚洲专区一区| 91精品综合久久久久久五月天| 免费看国产片在线观看| 久久九九国产精品| 亚洲精品乱码视频| 久久影院午夜精品| 欧美二区乱c少妇| 一区二区三区少妇| 国产精品国产一区| 欧美亚洲国产视频小说| 亚洲网站在线免费观看| thepron国产精品| 亚洲综合五月天| 永久免费毛片在线播放| 欧美一区二区在线看| av直播在线观看| 午夜精品久久久久99热蜜桃导演| 日韩69视频在线观看| 亚洲AV无码一区二区三区性 | 久久国产精品久久久久久电车 | 最近免费中文字幕大全免费版视频| 精品一区二区影视| 欧美在线视频二区| 黄色在线看片| 欧美高清精品3d| 中文幕无线码中文字蜜桃| 欧美精品午夜| 国产欧亚日韩视频| 日本天堂在线| 午夜精品久久久久久| 激情图片中文字幕| 精品成av人一区二区三区| 欧美国产在线视频| 国产又爽又黄免费软件| 国产三级欧美三级日产三级99| 国产freexxxx性播放麻豆| 欧美天堂一区二区| 在线观看欧美日韩国产| 狠狠人妻久久久久久| 国产成人久久精品77777最新版本| 亚洲一区二区三区涩| 欧美电影免费观看网站| 亚洲第一网中文字幕| 久久精品www人人爽人人| 精东粉嫩av免费一区二区三区| 日韩中文一区| 97成人资源| 精品一区二区三区三区| 国产精品xxxx喷水欧美| 国产99精品视频| av影院在线播放| 免费精品一区| 久久久精品国产| 91亚洲视频在线观看| 国产精品日日摸夜夜摸av| 亚洲成人福利在线观看| 精品av一区二区| 国产精品第一区| 户外极限露出调教在线视频| 色综合久久综合网| 久久精品成人av| 欧美aaa在线| 亚洲一区3d动漫同人无遮挡 | 亚洲bt欧美bt日本bt| 麻豆视频在线| 欧美一级xxx| 久久久一二三区| 成人动漫一区二区三区| 成人免费视频91| 日韩一级电影| 欧美专区日韩视频| h视频网站在线观看| 欧美综合色免费| 国产成人免费在线观看视频| 狠狠色丁香九九婷婷综合五月| 国产精品啪啪啪视频| 日韩精品一级| 2024亚洲男人天堂| 高清国产福利在线观看| 欧美日韩免费一区二区三区| 日韩激情小视频| 国产91精品一区二区麻豆网站| 男女猛烈激情xx00免费视频| 日韩有码中文字幕在线| 国产精品影片在线观看| a毛片在线播放| 欧美最新另类人妖| 亚洲欧美网站| 日韩欧美在线一区二区| 欧美男女视频| 欧美精品久久一区二区| 色呦呦免费观看| 在线这里只有精品| 91嫩草|国产丨精品入口| 成人午夜又粗又硬又大| 国产裸体舞一区二区三区| 国产精品久久久久久麻豆一区软件 | 中文在线永久免费观看| 蜜臀av性久久久久蜜臀aⅴ四虎 | 国产在线免费观看| 欧美剧在线免费观看网站| 欧美黄色一级网站| 久久久久青草大香线综合精品| 久久精品久久99| 亚洲区国产区| 伊人久久大香线蕉成人综合网| 8848成人影院| 国产精品视频永久免费播放| 日韩激情av| 中文字幕久热精品在线视频| 成人久久久精品国产乱码一区二区 | 91精品国产综合久久国产大片| 六月丁香在线视频| 中文字幕在线一区| 久久久久麻豆v国产精华液好用吗| 久久国产精品免费| 久久视频这里有精品| 91久久电影| 欧美大陆一区二区| 4438全国亚洲精品观看视频| 国产玖玖精品视频| 日本黄色免费在线| 欧美成人午夜激情| 国产高清一区在线观看| 亚洲精品久久久久中文字幕二区| 国产精品久久久久久69| 色女孩综合影院| 国产一级片久久| 亚洲欧洲av色图| 在线视频第一页| 久久综合狠狠综合| 欧美一级片黄色| 国产一区二区免费看| 天天看片天天操| 日本欧美久久久久免费播放网| 欧美a v在线播放| 国产精品99免费看| 91九色国产ts另类人妖| 日韩精品一区二区三区免费观影 | 精品亚洲一区二区三区四区| 午夜在线视频一区二区区别 | а天堂中文在线官网| 中文字幕在线看视频国产欧美在线看完整 | 免费在线欧美黄色| av在线播放亚洲| 国精品一区二区| 欧美精品久久96人妻无码| 91亚洲一区| 亚洲精品中字| 热久久天天拍国产| 亚洲图片小说在线| 日韩欧美不卡| 亚洲日本无吗高清不卡| 激情五月综合| 日韩久久久久久久| 欧美日韩在线观看视频小说| 欧美一区2区三区4区公司二百| 亚洲都市激情| 日本精品一区二区三区高清 久久| 精品按摩偷拍| 免费日韩电影在线观看| 亚洲人成网站77777在线观看| 欧美不卡三区| 国产一区二区三区四区五区传媒| 日本日本精品二区免费| 国产精品自拍区| 无遮挡亚洲一区| 日韩激情一区| 中文字幕乱码一区二区三区| 一区二区免费不卡在线| 亚洲中文字幕无码一区二区三区| 欧美区一区二| 日韩精品 欧美| 免费日韩一区二区| 色婷婷综合网站| 国产精品资源网| 国产人妻黑人一区二区三区| 91女人视频在线观看| 精品成人av一区二区三区| 国产欧美精品国产国产专区| 日本女人性生活视频| 亚洲精品videosex极品| 国产午夜视频在线播放| 欧美性少妇18aaaa视频| 最近中文字幕在线观看视频| 欧美一区二区成人6969| 狠狠人妻久久久久久综合麻豆| 亚洲美女av黄| 美女国产在线| 久久理论片午夜琪琪电影网| 老司机2019福利精品视频导航| 国产一区在线播放| 欧美成人专区| 亚洲一区二区在线看| 狠狠爱www人成狠狠爱综合网| 男人揉女人奶房视频60分 | 黄色美女一级片| 亚洲欧美日韩网| 国产福利视频在线| 欧美一级电影久久| 欧美aaaaaaaa| 国产综合色一区二区三区| 成人一区不卡| 亚洲人精品午夜射精日韩| 另类欧美日韩国产在线| 成人午夜精品无码区| 国产精品不卡一区二区三区| 日韩xxxxxxxxx| 欧美乱熟臀69xxxxxx| 视频在线不卡| 久久亚洲精品一区| 偷拍精品精品一区二区三区| 91gao视频| av在线不卡顿| 男人日女人下面视频| 久久 天天综合| 四虎国产精品成人免费入口| 一区二区三区高清| 中文字幕视频二区| 日韩精品免费观看| 一色桃子av在线| 国产精品网红直播| 色天天色综合| 久久人人爽人人爽人人av| 捆绑变态av一区二区三区| b站大片免费直播| 性久久久久久久| 999av视频| 中国china体内裑精亚洲片| 岛国av在线播放| 亚洲综合自拍一区| 国产精品97| jizzzz日本| 国产精品伦理一区二区| 无码人妻丰满熟妇区五十路 | 黄色影院在线播放| 亚州欧美日韩中文视频| 视频一区日韩| 99亚洲精品视频| 男人操女人的视频在线观看欧美| 性久久久久久久久久| 亚洲电影一区二区| 国产77777| 久久久久久免费精品| 亚洲午夜精品| 欧美一区二区视频在线播放| 激情深爱一区二区| av最新在线观看| 欧美日韩一级二级| 五月婷婷在线视频| 国产精品久久久久久久天堂| 日本道不卡免费一区| 亚州精品一二三区| 国产精品污www在线观看| 亚洲综合成人av| 在线不卡国产精品| 欧美大陆国产| 色乱码一区二区三区熟女 | 国产欧美在线看| 欧美丰满老妇| 超碰在线免费av| 一区二区三区在线视频观看58| a天堂视频在线| 欧美夫妻性生活xx| 国产精品一线| 少妇高潮毛片色欲ava片| 2欧美一区二区三区在线观看视频| 毛片在线免费视频| 亚洲欧美制服综合另类| 3d性欧美动漫精品xxxx软件| 日韩三级电影网站| 久久精品国产第一区二区三区| 黑鬼狂亚洲人videos| 日韩精品一区二区三区视频| brazzers在线观看| 久久久福利视频| 日韩高清不卡一区| 很污很黄的网站| 日韩亚洲欧美在线| 天堂中文最新版在线中文| 四虎影院一区二区三区 | 国产精品久久久久久久电影| 欧美成人直播| 亚洲国产精品第一页| 精品欧美激情精品一区| 成人h小游戏| 亚洲www在线| 午夜亚洲视频| 疯狂试爱三2浴室激情视频| 亚洲精品一区二区精华| 久久sese| 久久久久福利视频| 久久久亚洲午夜电影| 国产乱淫av片免费| 亲爱的老师9免费观看全集电视剧| 色中色综合网| 人妻激情偷乱频一区二区三区 | 91精品国产乱码久久久| 久久久久久久久久久国产| 国语产色综合| 久久无码专区国产精品s|