精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

欧美做受高潮1| 日韩三级免费观看| 亚洲欧美日韩精品久久久| 国产又大又粗又硬| 国产日韩一区| 日韩中文字幕在线免费观看| 国产裸体视频网站| 午夜精品成人av| 亚洲欧美国产77777| 国产一区免费视频| 91国内精品视频| 亚洲日本激情| 北条麻妃一区二区三区中文字幕 | 四虎国产成人精品免费一女五男| 另类视频一区二区三区| 一本大道久久a久久精品综合| 婷婷视频在线播放| 欧美xxx.com| 国产精品中文字幕日韩精品| 国产91色在线|| 国产亚洲精品码| 91亚洲国产成人久久精品| 亚洲第一天堂无码专区| 国产欧美一区二| 波多视频一区| 亚洲一二三四区| 亚洲自拍偷拍一区二区三区| 毛片在线播放网址| 成人精品视频一区二区三区尤物| 成人福利在线视频| 精品久久久久久久久久久久久久久久久久| 午夜久久影院| 北条麻妃一区二区三区中文字幕| 小早川怜子久久精品中文字幕| 成人动漫视频| 日韩欧美电影在线| 91在线第一页| 涩涩涩久久久成人精品| 色88888久久久久久影院按摩| 日本阿v视频在线观看| www免费视频观看在线| 中文在线资源观看网站视频免费不卡 | 精品性高朝久久久久久久| 国产成人av免费观看| 视频欧美精品| 欧美美女网站色| 亚洲人辣妹窥探嘘嘘| 免费观看成人性生生活片| 富二代精品短视频| 欧美日韩二三区| 成年女人在线看片| 亚洲r级在线视频| 男女激情免费视频| 九九色在线视频| 一二三四区精品视频| 久久久国内精品| 黑人另类精品××××性爽| 亚洲激情图片小说视频| 777久久精品一区二区三区无码 | 97精品国产97久久久久久| 国产亚洲欧美精品久久久www| 国产一区久久| 国产最新精品视频| www.中文字幕在线观看| 欧美资源在线| 国产精品青青在线观看爽香蕉 | 丁香花视频在线观看| 亚洲第一福利一区| 91猫先生在线| 国产另类xxxxhd高清| 欧美日韩在线亚洲一区蜜芽| 中文字幕66页| 91在线一区| 日韩成人xxxx| 久久久久亚洲AV成人无在| 天天综合久久| 午夜精品三级视频福利| 男人天堂2024| 狠狠色综合日日| 国产91精品入口17c| 你懂的视频在线观看| 国产精品女上位| 日本a在线天堂| 女人让男人操自己视频在线观看| 欧美亚洲综合久久| 欧美性猛交xx| 亚州国产精品| 日韩视频欧美视频| 日韩欧美国产亚洲| 蜜桃一区二区三区在线观看| 91国产在线免费观看| 视频二区在线| 亚洲欧美视频在线观看视频| 国产综合中文字幕| yw.尤物在线精品视频| 欧美一级二级三级蜜桃| 久久丫精品国产亚洲av不卡 | 欧美乱做爰xxxⅹ久久久| 国产高清不卡| 91精品国产综合久久久蜜臀图片| 小毛片在线观看| 日韩av免费大片| 国内精品在线一区| 一区二区不卡视频在线观看| 成人app下载| 中文字幕在线亚洲三区| 黑森林国产精品av| 欧美一区二区成人6969| 在哪里可以看毛片| 伊人久久婷婷| 91免费版网站入口| 国产精品一区二区三区四区色| 亚洲精品成a人| 国产性生交xxxxx免费| 97成人在线| 按摩亚洲人久久| 成人免费毛片男人用品| 成人精品高清在线| 中文字幕日韩一区二区三区不卡| 成人勉费视频| 亚洲黄色免费三级| 青娱乐国产在线视频| 秋霞影院一区二区| 日本精品一区| aa国产成人| 欧美大胆一级视频| 老司机成人免费视频| 日韩高清欧美激情| 女同一区二区| 在线最新版中文在线| 欧美精品一区二区三区一线天视频| 亚洲综合久久av一区二区三区| 美女国产一区| 欧美 日韩 国产在线| 新版的欧美在线视频| 精品日韩欧美一区二区| 国产探花在线播放| 国内久久精品视频| 2025韩国大尺度电影| 国产精品久久久久久久久免费高清 | 国产精品日韩在线观看| 青青操在线视频| 精品国产成人av| 亚洲少妇18p| 在线不卡亚洲| 精品高清视频| 日本不卡免费高清视频在线| 亚洲电影免费观看| 午夜影院在线看| 99久久国产综合精品麻豆| 久艹在线免费观看| 欧美巨大xxxx| 欧美在线xxx| 日本精品专区| 在线视频国内自拍亚洲视频| 欧美黄色一级生活片| 日本vs亚洲vs韩国一区三区| 日韩中文不卡| 久久亚洲资源中文字| 视频在线一区二区| 91亚洲欧美激情| 亚洲女子a中天字幕| 爱情岛论坛亚洲自拍| 在线 亚洲欧美在线综合一区| 国产亚洲一区在线播放| 欧美xxxhd| 国产小视频国产精品| 一起草av在线| 亚洲国产精品麻豆| 中日韩精品一区二区三区| 蜜臀av亚洲一区中文字幕| 日本久久高清视频| 国产美女撒尿一区二区| 日本国产一区二区三区| www.亚洲.com| 日韩一区二区三免费高清| 激情综合网五月婷婷| 久久精品夜色噜噜亚洲aⅴ| 182午夜在线观看| 狠狠入ady亚洲精品| 久久久久久久久久久久久9999| 欧美成人app| 久久99精品久久久久久琪琪| 深夜福利免费在线观看| 在线观看日韩电影| 久久免费小视频| 26uuu亚洲| 午夜免费视频网站| 久久久久久亚洲精品杨幂换脸| 一区二区三区四区国产| 51vv免费精品视频一区二区| 日本久久亚洲电影| 午夜影院免费在线| 国产午夜精品一区二区三区| 精品人妻一区二区三区麻豆91| 欧美性xxxx在线播放| caoporn91| 久久久久久久电影| 国产麻豆剧传媒精品国产| 久久一区中文字幕| 300部国产真实乱| 欧美理论视频| 国产伦精品一区二区三区照片91| 国产福利亚洲| 欧美一区二区三区艳史| 18av在线视频| 一区二区三区天堂av| 少妇高潮久久久| 91麻豆精品国产91久久久使用方法 | 这里只有精品在线| 欧美日韩在线精品一区二区三区| 日韩在线亚洲| 成人精品网站在线观看| 欧美大片免费| 午夜精品www| 中文字幕伦理免费在线视频| 在线视频欧美日韩精品| 丝袜视频国产在线播放| 日韩你懂的电影在线观看| 成人黄色三级视频| 一本色道久久综合精品竹菊| 久久精品美女视频| 亚洲欧美日韩国产综合| 农村老熟妇乱子伦视频| 久久亚洲综合色| 亚洲少妇18p| 成人av第一页| 在线天堂www在线国语对白| 国产精品 日产精品 欧美精品| 日韩在线不卡一区| 蜜臀av一区二区| 国产又大又黄又粗又爽| 视频在线观看91| 北条麻妃在线一区| 校园春色综合网| 草草久久久无码国产专区| 亚洲高清成人| 日韩精品在线中文字幕| 欧美激情一区| 国产女主播av| 欧美.www| 99re6这里有精品热视频| 亚洲h色精品| 男女激烈动态图| 你懂的一区二区| 天天想你在线观看完整版电影免费| 日韩av二区| 影音先锋亚洲视频| 国产精品久久久久久久久久10秀 | 日韩中文字幕电影| 久久久国产一区二区三区四区小说| 国产精品九九九九九| 91麻豆国产福利精品| 我和岳m愉情xxxⅹ视频| 国产日韩欧美综合一区| a天堂中文字幕| 国产精品女人毛片| 加勒比婷婷色综合久久| 亚洲精品国产无套在线观| 免费在线视频观看| 欧美日韩国产黄| 无码一区二区三区| 精品视频色一区| 99热这里只有精品在线观看| 欧美变态tickle挠乳网站| 亚洲国产成人精品一区二区三区| 精品国产123| 美女做暖暖视频免费在线观看全部网址91| 国产小视频国产精品| 免费黄色在线| 欧美黑人视频一区| 久久sese| 成人妇女免费播放久久久| a级日韩大片| 日本黑人久久| 在线精品国产| 欧美日韩在线中文| 久久国产精品一区二区| 午夜福利三级理论电影| 久久婷婷久久一区二区三区| 日韩av片在线免费观看| 亚洲在线视频网站| 波多野结衣日韩| 91精品国产91综合久久蜜臀| 人成网站在线观看| 日韩天堂在线视频| 1区2区3区在线| 国产精选久久久久久| 91精品尤物| 亚洲国产欧美一区二区三区不卡| 午夜精品亚洲| 国产激情在线观看视频| 国产精品伊人色| 99久久久无码国产精品性| 一区二区三区资源| 中文人妻av久久人妻18| 欧美一区二区日韩一区二区| 日本aaa在线观看| 欧美高清不卡在线| 亚洲精品一级二级| 国产精品区一区二区三在线播放| 欧美日韩久久精品| www插插插无码视频网站| 久久国产免费看| 国产精品探花一区二区在线观看| 亚洲色图制服丝袜| 无码人妻精品一区二区蜜桃色欲| 精品少妇一区二区三区| 91啦中文在线| 欧美一级淫片播放口| 日韩欧美激情电影| 亚洲欧美日韩综合一区| 久久国产精品亚洲77777| 先锋资源在线视频| 国产精品久久久久久户外露出| 国产精品视频免费播放| 日韩欧美二区三区| 超碰在线无需免费| 国产欧美一区二区三区在线看 | 国产毛片一区二区| 日韩女同一区二区三区| 精品国产福利在线| 国 产 黄 色 大 片| 久久久精品久久久久| 韩国成人在线| 欧美一级日本a级v片| 国产毛片久久| 久久久久久久人妻无码中文字幕爆| 中文字幕一区日韩精品欧美| 在线免费观看av网址| 国产视频自拍一区| 国产网站在线| 国产日韩精品推荐| 1024精品一区二区三区| 中文字幕18页| 亚洲一区二区五区| 丰满人妻一区二区三区四区53| 久久国产精品网站| 24小时成人在线视频| 一区二区三区免费看| 久久99精品网久久| 美女福利视频网| 欧美日韩亚洲综合一区二区三区| 成人三级黄色免费网站| 国产精品wwww| 精品免费视频| 日本激情视频在线播放| 中文字幕不卡一区| 97超碰中文字幕| 久久夜精品香蕉| 清纯唯美激情亚洲| 欧美中日韩在线| 99国内精品久久| 老熟妇仑乱一区二区av| 亚洲无亚洲人成网站77777| 91欧美精品| 中国成人亚色综合网站| 国产一区二区三区在线观看免费 | 91成人观看| av在线天堂网| 亚洲成av人片一区二区三区| 污污网站在线免费观看| 欧美亚洲在线播放| 成人在线免费观看91| 国产无色aaa| 亚洲大片在线观看| 欧美另类自拍| 国产在线日韩在线| 欧美精品综合| 扒开jk护士狂揉免费| 欧美日韩国产123区| av免费在线网站| 精品免费视频123区| 石原莉奈在线亚洲二区| 一级性生活免费视频| 精品日产卡一卡二卡麻豆| 日本免费一区二区三区四区| 亚洲在线欧美| 成人黄色av网站在线| 成人免费毛片视频| 久久夜色精品亚洲噜噜国产mv| 国产精品一区二区三区美女| mm1313亚洲国产精品无码试看| 亚洲天天做日日做天天谢日日欢| 人人妻人人澡人人爽久久av| 国产精品电影久久久久电影网| 亚洲成人二区| 久久精品老司机| 91精品国产色综合久久ai换脸 | 精品久久久久久中文字幕一区奶水 | 成人黄色在线网站| 中文字幕在线2018| 久久久久久九九九| 成人羞羞视频在线看网址| 青青草精品在线| 欧美丝袜丝交足nylons| 搞黄网站在线看| 日本女人高潮视频| 国产亚洲一区二区三区四区 | 成人aaaa免费全部观看|