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

圖解 HTTP 的緩存機(jī)制 | 實(shí)用 HTTP

開發(fā) 開發(fā)工具 存儲軟件
HTTP 協(xié)議在網(wǎng)絡(luò)知識中占據(jù)了重要的地位,HTTP 協(xié)議最基礎(chǔ)的就是請求和響應(yīng)的報(bào)文頭(Header),大多數(shù) Http 協(xié)議的使用方式,都是依賴設(shè)置不同的 HTTP 請求/響應(yīng) 的 Header 來實(shí)現(xiàn)的。

 [[236386]]

一、序

Hi,大家好,我是承香墨影!

HTTP 協(xié)議在網(wǎng)絡(luò)知識中占據(jù)了重要的地位,HTTP 協(xié)議最基礎(chǔ)的就是請求和響應(yīng)的報(bào)文頭(Header),大多數(shù) Http 協(xié)議的使用方式,都是依賴設(shè)置不同的 HTTP 請求/響應(yīng) 的 Header 來實(shí)現(xiàn)的。

本系列《實(shí)用 HTTP》就拋開常規(guī)的 Header 講解式的表述方式,從實(shí)際問題出發(fā),來分析這些 Http 協(xié)議的使用方式,到底是為了解決什么問題?同時講解它是如何設(shè)計(jì)的和它實(shí)現(xiàn)原理。

HTTP 協(xié)議是一種無狀態(tài)的“松散協(xié)議”,它不會記錄不同請求的狀態(tài),并且因?yàn)樗旧戆藘啥耍蛻舳撕头?wù)端),根據(jù)請求和響應(yīng)來區(qū)分,它大部分的內(nèi)容都只是一個建議,其實(shí)雙邊是可以不遵守此建議的。例如:服務(wù)端說,這個數(shù)據(jù)緩存有一天的時效性,但是客戶端可以說,我不聽我不聽,我就要每次去重新請求。

“這里寫了建議零售價(jià) 2 元…”

“哦,不接受建議!”

說到緩存,本文就來說說 HTTP 緩存相關(guān)的內(nèi)容。

二、HTTP緩存使用

2.1 為什么需要緩存

緩存說白了就是為了快,無論是從磁盤到內(nèi)存還是從網(wǎng)絡(luò)到本地,都是為了在下次實(shí)用此資源的時候,能夠快速響應(yīng),避免多次的 I/O 操作。

通過網(wǎng)絡(luò)獲取資源,是一件耗時的操作,較大的資源還會需要客戶端和服務(wù)端之間進(jìn)行多次往返通信,這不但會增加客戶端響應(yīng)的時間,同時還會增加網(wǎng)絡(luò)流量。

在 HTTP 協(xié)議中,天然就有對緩存的支持,瀏覽器和 App 使用的開源網(wǎng)絡(luò)庫中,都是利用 HTTP 緩存來實(shí)現(xiàn)對資源的緩存。

瀏覽器是天然支持 HTTP 緩存,開源庫則需要進(jìn)行一些例如存規(guī)則和緩存的資源存放路徑之類的簡單設(shè)定。

2.2 設(shè)計(jì)一個緩存策略

那如果讓我們來設(shè)計(jì)緩存的策略,首先有兩個重要的指標(biāo)需要考慮。

1. 緩存失效

既然緩存主要是針對數(shù)據(jù)的復(fù)用,那我們就需要有一個條件來判定當(dāng)前緩存的數(shù)據(jù),是否依然有效。

總是不能一次緩存,終身使用吧,我們還需要在緩存失效之后,重新獲取新的數(shù)據(jù)并進(jìn)行緩存。這個前提就是,緩存都需要有一個失效的策略。

2. 減少讀取

雖然緩存會有失效策略,但是這只是客戶端單方面認(rèn)為失效,此時應(yīng)該再去服務(wù)端重新獲取一遍數(shù)據(jù)。

可有些情況下,其實(shí)資源可能依然有效,并沒有發(fā)生變動。那就需要有一個策略,讓服務(wù)端通知客戶端,當(dāng)前緩存依然有效,可以繼續(xù)使用。這樣在減少傳輸流量之外,也可以加快相應(yīng)時間,提高效率。

這就是一個好的緩存策略必須要考慮的地方,實(shí)際上 HTTP 緩存,也是這樣設(shè)計(jì)的。

2.3 HTTP 緩存

HTTP 緩存主要是通過請求和響應(yīng)報(bào)文頭中的對應(yīng) Header 信息,來控制緩存的策略。

這里主要涉及兩個 Header:

  • Cache-Control:設(shè)定緩存策略,是否使用緩存,超時時間是多少。
  • ETag:當(dāng)前返回?cái)?shù)據(jù)的驗(yàn)證令牌,可能是 Hash 值也可能是其他指紋,主要用于在下次請求的時候攜帶上,讓服務(wù)端依此判斷當(dāng)前數(shù)據(jù)是否有更改。

服務(wù)端在返回響應(yīng)數(shù)據(jù)的時候,會在報(bào)文頭中,增加用于描述當(dāng)前響應(yīng)的內(nèi)容類型、數(shù)據(jù)長度、緩存策略(Cache-Control)、驗(yàn)證令牌(ETag)等信息。

例如上圖就表示了一次請求響應(yīng)的事務(wù),大概客戶端請求一個文件的時候,服務(wù)端返回了一個 200 的狀態(tài)碼,表示響應(yīng)正常,響應(yīng)的數(shù)據(jù)長度為 1024 個字節(jié),建議客戶端將此資源緩存最多 120 秒,并且提供了一個指紋令牌(“cxmyDev123”),用來作為當(dāng)前數(shù)據(jù)的唯一標(biāo)識。

2.4 ETag 數(shù)據(jù)令牌

Cache-Control 中設(shè)定的 max-age 很好理解,就是設(shè)定緩存超時的時間,HTTP 緩存是限定一個超時的秒數(shù),來確定緩存失效的時間。

上古時期還會使用 expires 來決定超時的日期,但是已經(jīng)被廢棄了,如果和 Cache-Control 同時存在,以 Cache-Control 為準(zhǔn)。

在此時間間隔范圍內(nèi),客戶端不會再向服務(wù)端發(fā)送新的請求。當(dāng)資源距離上一次緩存的時間間隔,大于 120 秒后,客戶端才會再次向服務(wù)端發(fā)送請求。

假如沒有數(shù)據(jù)令牌的情況下,大概步驟應(yīng)該是這樣的:

1. 客戶端會首先找到本地緩存,然后發(fā)現(xiàn)它已經(jīng)失效,無法再次使用。

2. 客戶端再次向服務(wù)端發(fā)出新的請求,并獲取完整的數(shù)據(jù)再次進(jìn)行緩存。之后再刷新該緩存的超時時間。

但是這是一件效率非常低的事情,服務(wù)端并無法確定所持有的源資源什么時候會失效,所以提供的 max-age 值,只是一個參考值,是需要取平衡的,太短會導(dǎo)致請求頻繁,太長又會導(dǎo)致無法及時刷新客戶端資源。而此時再次請求的時候,是存在一定的概率,客戶端緩存的數(shù)據(jù)和服務(wù)端上持有的數(shù)據(jù)是一致的,我們就不需要再次對此數(shù)據(jù)資源進(jìn)行二次緩存,直接使用客戶端之前緩存的數(shù)據(jù)即可,同時還需要刷新緩存超時時間。

這正是數(shù)據(jù)驗(yàn)證令牌(ETag)想要解決的問題,服務(wù)端生成并返回的這個數(shù)據(jù)指紋令牌,通常就是返回?cái)?shù)據(jù)的 Hash 值或者其他數(shù)據(jù)指紋,客戶端無需關(guān)心它的生成規(guī)則,只需要知道它是當(dāng)前數(shù)據(jù)的一個唯一標(biāo)識。

客戶端需要在下次請求時將其通過 If-None-Match 這個請求報(bào)文頭,將此驗(yàn)證令牌發(fā)送至服務(wù)端,如果數(shù)據(jù)令牌指紋和服務(wù)端當(dāng)前的數(shù)據(jù)一致,則標(biāo)識資源未發(fā)生新的變化。就會返回一個 304 的狀態(tài)碼,表示可以繼續(xù)使用客戶端本地緩存的數(shù)據(jù),并刷新超時時間。注意當(dāng)響應(yīng)碼為 304 的時候,它是不包含數(shù)據(jù)內(nèi)容的。

通常此緩存操作對我們都是透明的,它是瀏覽器和開源網(wǎng)絡(luò)庫的基本實(shí)現(xiàn),我們無需自己去判斷 max-age 和 ETag 的值,這一步我們只需要確定服務(wù)端對此有支持即可。

這里只是提到了 If-None-Match,它標(biāo)識比較 ETag 是否不一致,除此之外,還有一些其他的相關(guān)報(bào)文頭,例如 If-Match,有興趣可以查閱相關(guān)資料。

2.5 Cache-Control

前面舉的例子中,我們只為 Cache-Control 設(shè)定了一個 max-age,但是其實(shí)還有一些更豐富的配置。

從緩存性能***化的角度來看,***的緩存是無需與服務(wù)端通信的緩存,可以通過緩存來消滅網(wǎng)絡(luò)延遲以及數(shù)據(jù)請求,從而來提高用戶的體驗(yàn)。

Cache-Control 是在 HTTP/1.1 中被定義的,它可以用于取代之前的緩存策略,現(xiàn)在所有的瀏覽器都支持 Cache-Control ,它已經(jīng)成為一種通用的標(biāo)準(zhǔn)。

Cache-Control 還有一些更靈活的配置,用來對緩存做一些更細(xì)致的操作。

1. “no-cache” 和 “no-store”

這兩個參數(shù)都表示每一次請求,都需要真實(shí)的發(fā)送一個網(wǎng)絡(luò)請求。

它們之間的區(qū)別在于,“no-cache”并不是真的不緩存數(shù)據(jù),它只是要求每次都確認(rèn)資源是否過期,也就是它會利用數(shù)據(jù)令牌 ETag 來一定程度的減小傳輸?shù)牧髁俊?/p>

而 “no-store” 完全是要求客戶端,每次都重新請求數(shù)據(jù)并下載***的數(shù)據(jù),不做任何緩存處理。這種不緩存的策略,也包括中間連接的代理、網(wǎng)關(guān) 等中間傳輸?shù)耐ǖ溃惨徊⒉粚?shù)據(jù)進(jìn)行緩存,每次都從源服務(wù)器上獲取數(shù)據(jù)。

2. “public” 和 “private”

“public” 是一種默認(rèn)的策略,表示當(dāng)前緩存是開放的,任何請求響應(yīng)的中間環(huán)節(jié),都可以對其進(jìn)行緩存,如果我們不顯式指定,則當(dāng)前為 “public” 緩存。

與之相對的 “private”,則表示當(dāng)前響應(yīng)是針對單個用戶的,并非通用數(shù)據(jù),因此不建議任何中間緩存對其進(jìn)行緩存。例如:瀏覽器就是一個比較私人的緩存源,它會緩存 “private” 的緩存,而 CDN 則不會。

三、***的緩存策略樹

前面提到,緩存的核心目的就是為了快,能讓下次使用的時候快速復(fù)用。所以在理想情況下,我們應(yīng)該將響應(yīng)數(shù)據(jù)盡可能多的緩存,盡可能的緩存足夠長的時間,并且為每個資源提供單獨(dú)的數(shù)據(jù)驗(yàn)證令牌,以便在時間過期之后快速校驗(yàn)。

但是任何事情都是要取其平衡點(diǎn)的,不存在什么***緩存策略,并非所有響應(yīng)資源都需要加緩存,這就需要根據(jù)業(yè)務(wù)場景來設(shè)定。

這里給出一個增加 HTTP 緩存的通用策略樹,你在對響應(yīng)增加緩存的時候,可以參考它來執(zhí)行。

正常情況下,我們針對不同的響應(yīng)屬性,會對它設(shè)置不同的緩存策略,下面根據(jù)場景,舉幾個例子。

3.1 用戶相關(guān)的數(shù)據(jù)

和單個用戶緊密相關(guān)的數(shù)據(jù),通常我們是不建議使用緩存的,但是依然存在幾個等級。

1. 嚴(yán)格不使用緩存

  1. Cache-Control:no-store 

2. 允許客戶終端緩存,但是每次使用都需要確認(rèn)

  1. Cache-Control:no-cache  
  2. ETag:"cxmyDev1234" 

3. 允許客戶終端短時間緩存

  1. Cache-Control:private max-age=600 
  2. ETag:"cxmyDev1234" 

3.2 通用數(shù)據(jù)

一些通用響應(yīng)資源,更新的頻率非常的低,我們可以根據(jù)需要調(diào)整 max-age 的大小即可。

  1. Cache-Control:max-age=86400 
  2. ETag:"cxmyDev1234" 

四、廢棄和更新緩存的響應(yīng)

緩存的策略,一旦確定并下發(fā)到客戶端,服務(wù)端就失去了對齊的控制權(quán)。也就是說,如果我們設(shè)定了 max-age,在此資源有效期超時之前,哪怕服務(wù)端的源資源已經(jīng)被替換修改,我們也沒有一個合適的時機(jī)去通知客戶端更新新的響應(yīng)數(shù)據(jù)。

那么有沒有什么好的策略去標(biāo)記資源廢棄?同時又能友好的利用緩存策略。

在互聯(lián)網(wǎng)上,所有服務(wù)上的資源,都有一個對應(yīng)的 URL(統(tǒng)一資源定位符),它可以明確說明如何從一個精確且固定的位置獲取資源。而 HTTP 緩存,也是依賴于 URL 的,注意 URL 是大小寫敏感的,同一個 URL 表示同一個請求響應(yīng),依此來判斷緩存和后續(xù)緩存的復(fù)用。

所以我們是可以在 URL 上做文章的。

4.1 瀏覽器的廢棄策略

前面提到,瀏覽器是天然支持 HTTP 緩存的,對于瀏覽器來說,它所面對的就是一個個 HTML 頁面,頁面內(nèi)會包含一些 CSS、Image、JavaScript、JSON 資源和數(shù)據(jù)。

針對不同的資源和數(shù)據(jù),我們可以在其 URL 上,增加數(shù)據(jù)令牌指紋,當(dāng)資源變動的時候,同時也去刷新改指紋令牌。

到這里就很好理解了:

HTML 頁面,使用 no-cache,強(qiáng)制每次都向源服務(wù)器確認(rèn)數(shù)據(jù)。

CSS文件通常變動的頻率非常低,所以可以允許中間層緩存,并且緩存時間為一年不過期。

JavaScript內(nèi)有業(yè)務(wù)邏輯,可以設(shè)定為只允許客戶終端緩存。

getUserInfo,是為個人用戶數(shù)據(jù)相關(guān),這里推薦可緩存,但是需要每次向服務(wù)器重新確認(rèn)。

4.2 App 接口的緩存策略

在 App 中使用的接口,其實(shí)和網(wǎng)頁又不一樣,HTML 網(wǎng)頁的結(jié)構(gòu)類似一個樹形結(jié)構(gòu),先通過獲取 .html 文件獲取其內(nèi)所有資源的表,然后依次根據(jù)緩存策略進(jìn)行訪問。

但是在 App 中,和服務(wù)器的交互都是通過數(shù)據(jù)接口來實(shí)現(xiàn)的,就不存在最開始獲取一個類似 HTML 文件這樣的樹形接口,每個接口都是一個個“孤島”,可以單獨(dú)存在。我們就無法提前知道某個接口的響應(yīng)數(shù)據(jù)已經(jīng)過期,同時也無法修改 URL 上攜帶的數(shù)據(jù)指紋令牌。

但是其實(shí)我們是可以通過 App 和設(shè)備的一些固有信息,作為 URL 的參數(shù)傳遞,以此來刷新數(shù)據(jù)。

例如這里 /app/main 獲取主頁的數(shù)據(jù),這里將當(dāng)前 App 的版本號當(dāng)參數(shù)拼接在 URL 的后面,以此方式來強(qiáng)制不同的版本,刷新不同的數(shù)據(jù)。避免剛升級上來的 App,還在使用舊版本的數(shù)據(jù)。

這個例子中,版本號只是其中一個維度,如果有必要,還可以傳遞其他維度的信息,例如當(dāng)前網(wǎng)絡(luò)狀態(tài),當(dāng)前用戶 id 等等。

五、小結(jié)

到這里我們基本上把 HTTP 的緩存所有相關(guān)的內(nèi)容都講了一遍,這里簡單總結(jié)一下。

HTTP 緩存依賴 URL 做唯一標(biāo)識,不同的 URL 使用不同的緩存。

Cache-Control 可以控制緩存策略,共有或者私有、緩存超時時長等。

通過 ETag 來標(biāo)記數(shù)據(jù)指紋令牌,以此來確定響應(yīng)數(shù)據(jù)是否更新。

應(yīng)該為每個響應(yīng)資源提供對應(yīng)的緩存策略。

如果需要廢棄之前的緩存,可以利用修改請求 URL 的方式,將數(shù)據(jù)指紋令牌追加在 URL 之后,以此來更新數(shù)據(jù)。

關(guān)于 HTTP 緩存,你還有什么更好的想法,可以在留言區(qū)討論。

參考資料:

《HTTP緩存》:http://t.cn/RL1NI8P

《基于緩存策略三要素分解法》

【本文為51CTO專欄作者“張旸”的原創(chuàng)稿件,轉(zhuǎn)載請通過微信公眾號聯(lián)系作者獲取授權(quán)】

戳這里,看該作者更多好文

 

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2019-08-08 15:47:03

HTTP緩存CDN

2017-05-15 13:40:20

瀏覽器http緩存機(jī)制

2015-10-09 15:07:02

HTTP網(wǎng)絡(luò)協(xié)議

2019-06-18 15:57:25

HTTP緩存機(jī)制

2018-10-09 09:28:12

HTTPHTTP協(xié)作服務(wù)器

2018-11-30 09:03:55

HTTP緩存Web

2020-09-28 06:48:15

HTTP協(xié)議版本

2021-08-03 09:33:55

HTTP網(wǎng)絡(luò)協(xié)議TCP

2021-08-03 10:10:16

HTTP連接管理

2017-05-19 08:05:08

瀏覽器緩存HTTP

2022-03-09 18:54:30

HTTP緩存協(xié)議cache

2021-05-18 08:31:46

緩存HTTP服務(wù)器

2022-05-10 08:58:56

CacheHTTP

2020-03-03 15:40:51

開發(fā)技能代碼

2016-09-06 22:05:41

HttpCookieWeb

2018-06-27 15:14:31

HTTP編碼內(nèi)容

2013-05-08 12:42:39

HTTP協(xié)議IIS原理ASP.NET

2017-05-10 11:40:29

緩存Nginx HTTP

2017-09-21 10:00:07

緩存web服務(wù)器

2020-08-24 08:27:00

HTTP存儲瀏覽器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

欧美xxxooo| 丰满少妇被猛烈进入高清播放| 欧美另类高清videos的特点| 国产一区二区三区亚洲| 亚洲国产sm捆绑调教视频| 粉嫩精品一区二区三区在线观看| 久久黄色免费视频| 日韩欧美中文字幕电影| 91黄色小视频| 99re99热| 欧美视频久久久| 亚久久调教视频| 亚洲欧美国产一区二区三区| 天天操天天爱天天爽| 免费av网站在线看| 国产宾馆实践打屁股91| 欧美性受xxx| 在线看片中文字幕| 日韩在线视频一区二区三区| 欧美日韩国产一区二区三区| 色阁综合av| 国产精品无码久久久久成人app| 欧美日韩四区| 亚洲色图日韩av| 免费网站在线观看黄| 97天天综合网| 国产精品色哟哟| 国产精品久久久久久久小唯西川 | 精品一区二区三区免费观看| 久久综合九色九九 | 久久久久久久久久久电影| 国产欧美精品一区二区三区-老狼| 日日骚一区二区三区| 91在线一区| 欧美三级视频在线播放| 国产曰肥老太婆无遮挡| www免费网站在线观看| 成人美女视频在线观看| 国产日韩欧美日韩| 国产专区第一页| 欧美不卡一区| 在线播放国产一区中文字幕剧情欧美| 欧美一级大片免费看| 日韩经典一区| 欧美日韩精品在线观看| 成人午夜免费剧场| 在线观看免费黄视频| 99久久精品免费精品国产| 91精品啪aⅴ在线观看国产| 久久久久久久久久久影院| 欧美福利视频| xxxxx91麻豆| 国产一区二区三区四区五区六区| 福利片一区二区| 欧美一区三区四区| 九九热在线免费| 三上悠亚国产精品一区二区三区| 亚洲午夜精品网| 9l视频自拍9l视频自拍| 日本视频不卡| 国产精品素人视频| 日韩欧美一区二区三区四区 | 日韩av影片在线观看| japan高清日本乱xxxxx| 亚洲久草在线| 欧美日韩在线一区二区| 黄色av免费在线播放| 黑森林国产精品av| 五月综合激情网| www.av中文字幕| 第四色日韩影片| 亚洲线精品一区二区三区八戒| mm131午夜| 成人网视频在线观看| 久久综合一区二区| 免费久久99精品国产自| 婷婷婷国产在线视频| 暴力调教一区二区三区| 精品在线视频一区二区三区| 亚洲乱码在线观看| 成人黄色小视频在线观看| 成人精品一二区| 亚洲成人中文字幕在线| 高清不卡一二三区| 极品日韩久久| 亚洲AV成人无码一二三区在线| 成人ar影院免费观看视频| 国产亚洲欧美另类一区二区三区| 天堂在线观看免费视频| 91一区二区三区在线播放| 欧美福利精品| 国产一区二区三区福利| 国产精品美女久久久久久久久| 综合操久久久| 日本天码aⅴ片在线电影网站| 亚洲制服丝袜在线| koreanbj精品视频一区| 俺来也官网欧美久久精品| 精品日本高清在线播放| 久久精品视频91| 国产精品色婷婷在线观看| 欧美一级片免费看| 亚洲黄色免费在线观看| 日本午夜精品久久久| 一区二区国产精品视频| 国产97免费视频| 国产日韩欧美一区| 国产精品自产拍在线观看| 国产免费av电影| 不卡一二三区首页| 日韩欧美一区二区视频在线播放| caoporm免费视频在线| 亚洲成a人在线观看| 中国丰满人妻videoshd| 台湾天天综合人成在线| 精品久久久久久无| 亚洲精品国产91| 午夜日韩av| 青青精品视频播放| a级片在线播放| 久久婷婷成人综合色| 99精品一级欧美片免费播放| 国产在线精彩视频| 欧美色视频在线观看| 成人做爰69片免费| 欧美一级淫片| 68精品久久久久久欧美| 国产喷水吹潮视频www| 91免费国产在线观看| 影音欧美亚洲| 丝袜美腿一区| 欧美高清精品3d| 久久精品无码一区| 激情婷婷久久| 91久久精品美女| 国产中文在线视频| 性做久久久久久免费观看| 一区二区久久精品| 欧美亚洲国产日韩| 欧美大胆在线视频| 一二三四区视频| 久久久久久亚洲综合| 草草视频在线免费观看| 亚洲tv在线| 一本色道久久88精品综合| 日韩xxx高潮hd| 国产91精品久久久久久久网曝门| 亚洲高清乱码| 欧美成a人片在线观看久| 亚洲国产婷婷香蕉久久久久久 | 亚洲成人77777| 日本一区二区三区在线不卡| 色综合久久久久无码专区| 中文在线免费一区三区| 久久影视电视剧免费网站清宫辞电视| 波多野结衣家庭主妇| 91捆绑美女网站| 成人中文字幕在线播放| 久久电影在线| 久久免费视频网| 亚洲奶汁xxxx哺乳期| 一区二区三区欧美激情| 精品人妻一区二区三| 欧美日韩色图| 国产精品无码专区在线观看| 超碰在线影院| 欧美三级三级三级| 成年人在线免费看片| 丝袜美腿亚洲一区| 国产区一区二区| 欧美精品videossex少妇| 日韩视频一区二区三区在线播放 | 韩国女主播一区二区三区| 欧美激情a∨在线视频播放| 精品人妻一区二区三区换脸明星 | 欧美日韩国产精品一区二区三区| 国产一区在线不卡| 免费久久久久久| 亚洲精品国产九九九| 久久久久久久亚洲精品| 天堂网在线资源| 一本到高清视频免费精品| 久久丫精品国产亚洲av不卡| 香蕉久久夜色精品国产| 日韩av电影免费在线观看| 成人亚洲视频| 最近更新的2019中文字幕| 国产又粗又猛又黄又爽无遮挡| 亚洲色图视频网| 在线观看你懂的视频| 极品裸体白嫩激情啪啪国产精品| julia一区二区中文久久94| 久久av色综合| 日韩电影大全免费观看2023年上| 一级黄色在线观看| 亚洲欧洲性图库| 日本天堂在线播放| 亚洲欧美日韩专区| 在线观看亚洲视频啊啊啊啊| 久久久精品区| 18一19gay欧美视频网站| 国产二区视频在线观看| 91麻豆精品国产无毒不卡在线观看| a级黄色片免费看| 91欧美一区二区| 999在线观看| 黄色另类av| 午夜精品一区二区三区四区| 中文字幕一区二区三区四区久久 | 国产一区久久精品| 亚洲第一男人av| jizz国产在线| 亚洲在线中文字幕| 免费看黄色aaaaaa 片| 蜜臀va亚洲va欧美va天堂| 日韩一级特黄毛片| 加勒比久久综合| 动漫3d精品一区二区三区| 999av小视频在线| 最近日韩中文字幕中文| 日本精品999| 欧美日韩aaaaaa| 久久久久久少妇| 亚洲蜜桃精久久久久久久| 亚洲一区二区三区综合| 国产精品综合av一区二区国产馆| 日本精品免费在线观看| 女生裸体视频一区二区三区| 日韩一区二区三区高清| 国产精品一线| 91精品久久久久久久久| 欧美粗大gay| 久久久久久美女| 成人全视频高清免费观看| 亚洲黄色av女优在线观看| 国产欧美日韩综合精品一区二区三区| 色综合天天在线| 欧美 日韩 国产 一区二区三区| 久久久久久久久久久久久久久99| 国产欧美视频一区| 精品一区精品二区高清| 国产欧美高清在线| 一级成人国产| 日本中文字幕亚洲| 午夜欧美精品久久久久久久| 一个色的综合| 精品一区电影| 欧美一区激情视频在线观看| 激情久久免费视频| 成人黄色免费片| 国产精品麻豆成人av电影艾秋| 91福利视频在线观看| 国产丝袜精品丝袜| 欧美激情区在线播放| 成人在线直播| 久久久精品免费| 69久久久久| 中文字幕亚洲综合久久| 国产鲁鲁视频在线观看免费| 亚洲色图第三页| 少妇喷水在线观看| 日韩电影免费在线观看中文字幕 | 国产suv精品一区| 99久久99久久精品国产片| 久久av偷拍| 成人三级在线| 日韩精品一区二区三区免费视频| 国产精品自拍视频| 91精品福利观看| 亚洲伊人一本大道中文字幕| av在线成人| 亚洲综合成人婷婷小说| 91久久偷偷做嫩草影院电| 国产手机精品在线| 日韩av自拍| 国产精品第157页| 久久精品官网| 九九热视频免费| 99精品视频免费在线观看| 卡一卡二卡三在线观看| 亚洲精品久久久蜜桃| 日本中文字幕在线免费观看| 一本一本大道香蕉久在线精品 | 理论电影国产精品| 男男受被啪到高潮自述| 久久新电视剧免费观看| 亚洲少妇xxx| 精品日本高清在线播放| 91 中文字幕| 日韩av在线网| 美女隐私在线观看| 欧美最近摘花xxxx摘花| 99视频有精品高清视频| 久久99欧美| 一区二区在线影院| 国产免费人做人爱午夜视频| 国内精品第一页| 亚洲精品乱码久久久久久久久久久久| 亚洲婷婷综合色高清在线| 五月天婷婷激情| 日韩亚洲国产中文字幕欧美| 国产在线播放av| 国内精品久久久久久久| 日韩成人免费av| 日本视频一区在线观看| 亚洲黄色一区| 欧美日韩理论片| 欧美激情一区三区| 精品国产乱码一区二区| 日韩一区二区在线观看视频播放| 韩国三级在线观看久| 久久久女人电视剧免费播放下载| 黄色成人小视频| 欧美激情一区二区三区在线视频 | 97成人精品视频在线观看| 国产免费区一区二区三视频免费| 欧美一区视久久| 亚洲影音一区| 中国极品少妇xxxx| 亚洲精品国产精品乱码不99| 中文文字幕一区二区三三| 日韩国产欧美精品一区二区三区| 四虎av在线| 91在线视频导航| 欧美大人香蕉在线| 午夜视频你懂的| 久久免费精品国产久精品久久久久| 久久久99精品| 日韩一区二区三区四区五区六区 | 中文字幕在线不卡| 懂色av中文字幕| 亚洲视频免费一区| 在线一区av| 欧美视频小说| 亚洲欧美日韩国产一区二区| 偷偷色噜狠狠狠狠的777米奇| 亚洲国产精品久久人人爱| 精品人妻av一区二区三区| 欧美精品在线免费播放| 免费欧美网站| 最新av网址在线观看| 国产乱人伦精品一区二区在线观看| 美国一级片在线观看| 在线播放日韩导航| 免费成人黄色| 亚洲直播在线一区| 欧美日本在线| 网站免费在线观看| 色综合天天做天天爱| 国产女人在线视频| 国产精品久久久久影院日本| 欧美亚洲精品在线| 日韩va在线观看| 一区二区三区蜜桃| 日韩一级片免费观看| 68精品国产免费久久久久久婷婷| 日韩精品丝袜美腿| 好男人www社区| 亚洲欧洲www| 国产刺激高潮av| 91chinesevideo永久地址| 伊人久久大香线蕉无限次| 欧美精品第三页| 国产精品久久综合| av观看在线免费| 97精品国产97久久久久久免费| 欧美做受69| 亚洲天堂av线| 亚洲免费毛片网站| 婷婷在线观看视频| 日韩美女主播视频| 91精品一区二区三区综合在线爱| 超碰人人cao| 色综合咪咪久久| 黄色网页网址在线免费| 国产精品国色综合久久| 麻豆久久精品| 亚洲不卡在线播放| 亚洲国产美女久久久久| 88xx成人网| 菠萝蜜视频在线观看入口| 久久综合av免费| 国产露脸无套对白在线播放| 久久久久久国产| 国产一区99| 国产ts在线观看| 欧美在线观看18| wwww亚洲| 一区二区国产日产| 99国产精品国产精品毛片| 一级aaaa毛片| 人人爽久久涩噜噜噜网站| 五月开心六月丁香综合色啪| 亚洲av成人精品一区二区三区 | 污视频网址在线观看| 亚洲国产精品久久久男人的天堂| 国产69久久| 久久国产手机看片| 国产精品一二二区| 日本中文字幕在线观看视频|