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

面試常客:聊聊 HTTP 緩存的一切

網絡 網絡優化
HTTP/1.0 提出緩存概念,即強緩存 Expires 和協商緩存 Last-Modified。后 HTTP/1.1 又有了更好的方案,即強緩存 Cache-Control 和協商緩存 ETag。

速度、速度,還是速度,一個網站要想體驗好,就必須在第一時間以最快的速度顯示出來。mysql查詢慢,就加一層 redis 做緩存,網站資源加載慢,怎么做,使用 HTTP緩存。

HTTP緩存自 HTTP/1.0 就開始有,為的是減少服務器壓力,加快網頁響應速度。

緩存操作的目標

HTTP 緩存只能存儲 GET 請求的響應,而對其他類型的請求無能為力。

緩存發展史

HTTP/1.0 提出緩存概念,即強緩存 Expires 和協商緩存 Last-Modified。后 HTTP/1.1 又有了更好的方案,即強緩存 Cache-Control 和協商緩存 ETag。

為什么 Expires 和 Last-Modified 不適用呢?

Expires 即過期時間,但問題是這個時間點是服務器的時間,如果客戶端的時間和服務器時間有差,就不準確。所以用 Cache-Control 來代替,它表示過期時長,這就沒歧義了。

Last-Modified 即最后修改時間,而它能感知的單位時間是秒,也就是說如果在1秒內改變多次,內容文件雖然改變了,但展示還是之前的,存在不準確的場景,所以就有了 ETag,通過內容給資源打標識來判斷資源是否變化。

以下表格利于對比理解:

版本 強緩存 協商緩存 HTTP/1.0 Expires Last-Modified HTTP/1.1 Cache-Control ETag。

兩大緩存類型對比

前文已介紹不同版本下的緩存類型。當時提了有一句強緩存和協商緩存,但沒具體介紹。現在來講講這兩種緩存類型。

強緩存

Cache-Control

  • HTTP/1.1。
  • 通過過期時長控制緩存,對應的字段有很多,例如 max-age 例如 Cache-Control: max-age=3600,表示緩存時間為3600秒,過期失效。
  • 緩存請求指令: Cache-Control: max-age= Cache-Control: max-stale[=] Cache-Control: min-fresh= Cache-control: no-cache Cache-control: no-store Cache-control: no-transform Cache-control: only-if-cached。
  • 緩存響應指令: Cache-control: must-revalidate Cache-control: no-cache Cache-control: no-store Cache-control: no-transform Cache-control: public Cache-control: private Cache-control: proxy-revalidate Cache-Control: max-age= Cache-control: s-maxage=。
  • 其中關鍵點: Cache-control: no-cache 跳過當前的強緩存,發送 HTTP 請求(如有協商緩存標識即直接進入協商緩存階段)no-cache 的含義和 max-age=0 一樣 ,即跳過強緩存,強制刷新 Cache-control: no-store 不使用緩存(包括協商緩存) Cache-Control: public, max-age=31536000 一般用于緩存靜態資源public:響應可以被中間代理、CDN 等緩存private:專用于個人的緩存,中間代理、CDN等能換緩存此響應max-age:單位是秒。
  • 更多指令參考指令大全。

Expires

  • HTTP/1.0。
  • 語法: Expires: 。
  • 即過期時間,存在于服務器返回的響應頭里 Expires: Mon, 11 Apr 2022 06:57:18 GMT表示資源在2022年4月11號6點57分過期,過期了就會往服務端發請求。
  • 如果在Cache-Control響應頭設置了 "max-age" 或者 "s-max-age" 指令,那么 Expires 頭會被忽略。
  • 缺點:服務器時間與瀏覽器時間可能不一致。
  • 更多指令參考指令大全。

Cache-Control VS Expires

  • Cache-Control 較之 Expires 更為精準。
  • 同時存在時,Cache-Control 優先級大于 Expires。
  • Expires 是 HTTP/1.0 提出,其瀏覽器兼容性更好,Cache-Control 是 HTTP/1.1 提出,可同時存在,當有不支持 Cache-Control 的瀏覽器時會以 Expires 為準。

協商緩存

協商緩存需要配合強緩存使用,使用協商緩存的前提是設置強緩存設置 Cache-Control: no-cache或者 pragma: no-cache或者 max-age=0 告訴瀏覽器不走強緩存。

pragma 是 HTTP/1.0 中禁止網頁緩存的字段,其取值為 no-cache 和 Cache-Control 的 no-cache 效果一樣。

ETag/If-None-Match

  • HTTP/1.1。
  • 即生成文件唯一標識來判斷是否過期。只要內容改變,這個值就會變。
  • 與 If-None-Match 配合,ETag是請求服務器后返回給每個資源文件的唯一標識,客戶端會將此標識存在客戶端(即瀏覽器)中,下次請求時會在請求頭的 If-Nono-Match 中將其值帶上,服務器判斷 If-None-Match 是否與自身服務器上的 ETag 一致,如果一致則返回 304,重定向跳轉使用本地緩存;不一致,則返回200,將最新資源返回給客戶端,并帶上 ETag。
  • 更多指令參考指令大全。

Last-Modified/If-Modified-Since

  • HTTP/1.0。
  • 最后修改時間,即通過最后修改時間來判斷是否過期。在瀏覽器第一次給服務器發送請求后,服務器會在響應頭上加上這個字段。
  • 與 If-Modified-Since 配合,客戶端訪問服務器資源時,服務器端會將 Last-Modified 放入響應頭中,即這個資源在服務器上的最后修改時間,客戶端緩存這個值,等下次請求這個資源時,瀏覽器會檢測到請求頭中的 Last-Modified,于是乎添加 If-Modified-Since,如果 If-Modified-Since 的值與服務器中這個資源的最后修改時間一致,則返回 304,重定向跳轉使用本地緩存;不一致,則返回200,將最新資源返回給客戶端,并帶上 Last-Modified。
  • 缺點: 文件雖然被修改,但最后的內容沒有變化,這樣文件修改時間還是會更新有些文件修改頻率在秒以內,這樣以秒粒度來記錄就不適用了有些服務器無法精準獲取文件的最后修改時間。
  • 更多指令參考指令大全。

ETag VS Last-Modified

  • 精確度 ETag > Last-Modified。ETag 是通過內容給資源打標識來判斷資源是否變化,而 Last-Modified不一樣,在某些場景下準確度會失效。例如編輯文件,但是文件內容未變,緩存會失效;或者在1秒內改變多次,Last-Modified能感知的單位時間是秒。
  • 性能 Last-Modified > ETag。Last-Modified 僅僅記錄一個時間點,而 ETag需要根據文件的具體內容生成哈希值。
  • 如果兩個都支持的話,服務器會優先選擇ETag。

協商緩存的條件請求

前文說到協商緩存是在請求頭添加 If-None-Match 或 If-Modified-Since,這些請求頭是什么,添加有什么用?

強緩存是通過具體時間到期或過期時長來控制緩存,這就有個問題了,如果其中的一些文件修改了,因為強緩存,瀏覽器展示的還是原來的數據,所以對那種常變化的數據不能使用強緩存做緩存策略,于是乎,就有了協商緩存,通過文件變化告訴瀏覽器緩存失效,使用前需去服務器驗證是否是最新版?

這樣,瀏覽器就要連續發送兩個請求來驗證:

  • 先是 HEAD 請求,獲取資源的修改時間、hash值等元信息,然后與緩存數據比較,如果沒有改動就使用緩存。
  • 否則就再發一個 GET 請求,獲取最新的版本。

但這樣的兩個請求的網絡成本太高,所以 HTTP 協議就定義了一系列 If 開頭的條件請求字段,專門用來檢查驗證資源是否過期,把兩個請求合并在一個請求中做。而且驗證的責任也交給服務器。

  • If-Modified-Since:和 Last-modified 比較,是否已經修改了。
  • If-None-Match:和 ETag 比較,唯一標識是否一致。
  • If-Unmodified-Since:和 Last-modified 對比,是否修改。
  • If-Match:和 ETag 比較是否匹配。
  • If-Range

其中,最常見的當屬是 If-Modified-Since 和 If-None-Match。它們分別對應Last-Modified 和 ETag。需要第一次的響應報文預先提供 Last-Modified 和 ETag,然后第二次請求時就可以帶上緩存里的原址,驗證資源是否是最新的。

如果資源沒有變,服務器就回應一個 304 Not Modified ,表示緩存依然有效,瀏覽器就可以更新一個有效期,然后使用緩存了。

緩存流程

什么時候用強緩存,什么時候用協商緩存?

首先強緩存的權重大于協商緩存,當強緩存存在時,協商緩存只能看著;其次 HTTP/1.1 中的緩存標識符大于 HTTP/1;所以當 Cache-Control 存在時,看它的,如果它不存在,則看 Expires,如果將強緩存設置為 Cache-Control:no-cache、Cache-Control:max-age=0、pragma: no-cache,即告訴瀏覽器不走強緩存,則進入協商緩存。

判斷上次響應中是否有ETag,如果有,則發起請求,請求頭中帶有條件請求 If-None-Match,如果沒有,則再判斷上次響應中是否有Last-Modified,如果有,則發起請求頭中帶If-Modified-Since 的條件請求,如果沒有,則說明沒有協商緩存,發起 HTTP 請求即可。無論是帶If-None-Match的請求還是 If-Modified-Since 的請求,都會返回狀態(由服務器端判讀資源是否變化),如果是304,說明緩存資源未變,使用本地緩存;如果是200,則說明資源改變,發起 HTTP 請求,并記住響應頭中的 ETag/Last-Modified。

大致流程圖如下所示:

緩存判斷流程圖

那么哪些資源要采用強緩存,哪些資源采用協商緩存呢?

像靜態資源這類我們長期不會去變動的資源應該用強緩存,不難理解;而像我們常修改的文件應該采用協商緩存,如果資源沒變,那么當用戶第二次進去還是用該資源,如果資源修改,用戶進入發起 HTTP 請求獲取最新資源。

我們在訪問網站時,如果留心都能在 F12 中觀察到一二。如圖所示,我的五年前端三年面試放在 github 服務器上,F12進入 Network中,能看到返回頭中的信息。Cache-Control、Expires、ETag、Last-Modified都存在。

五年前端三年面試

緩存位置

上文中常提到無論使用強緩存還是協商緩存,都會從瀏覽器本地中獲取,那么瀏覽器的本地存儲是存在哪里,他們又有什么分類呢?

按照緩存位置分類,分為四處,Memory Cache(內存緩存)、Disk Cache(硬盤緩存)、Service Worker、Push Cache。

Memory Cache

因為內存有限,并不是所有的資源文件都會放在內存里緩存,它主要用來緩存有 preloader 相關指令的資源,比如。preloader 可以一邊解析 js/css 文件,一邊網絡請求下一個資源。

Disk Cache

磁盤上的緩存。在所有瀏覽器緩存中,disk cache 覆蓋面最大,它會根據 HTTP Header 中的字段判斷哪些資源需要緩存,哪些資源已經過期需要重新從服務器端請求。

Service Worker

獨立線程,借鑒了 Web Worker 的思路。即讓 JS 運行在主線程之外,由于它脫離瀏覽器窗口,因為無法直接訪問DOM,但是它還是能做很多事情,如

  • 離線緩存,Service Worker Cache。
  • 消息推送。
  • 網絡代理。
  • 它是PWA的重要實現機制。

Push Cache

即推送緩存,瀏覽器中的最后一道防線,HTTP2中的內容。

優先級:Service Worker-->Memory Cache-->Disk Cache-->Push Cache。

實踐

說了這么多理論知識,等實戰的時候卻一頭霧水,怎么破?

以上皆為口舌之辯,唯有實踐出真章(以上皆為面試之辯,唯有實踐出本事)。

目前前端項目都是以 webpack 或類 webpack 工具庫打包,在 webpack 中配置哈希,前端方面的緩存工作就完成了。

我們要實現的效果是:

  • HTML:協商緩存。
  • CSS、JS、圖片等資源:強緩存,文件名帶上hash。

webpack 中的哈希有三種:hash、chunkHash、contentHash。

  • Hash:和整個項目的構建相關,只要項目文件有改變,整個項目構建的 hash 值就會改變。
  • chunkHash:和 webpack 打包的 chunk 有關,不同的入口會生成不同的 chunkHash值。
  • contentHash:根據文件內容來定義hash,文件內容不變,則 contentHash 不變。

這邊需要把 CSS 用 contentHash 處理,其他資源用 chunkHash 做處理。

非前端工程化項目

即傳統的前端頁面,一般放在靜態服務器中,那么就要對修改的文件做版本控制,例如在入口文件 index.js 上加版本號(index-v2.min.js)或者加時間戳(time=1626226),以此做緩存策略。

后端緩存實踐

真正起到緩存作用的是在后端,后端來設置緩存策略,告訴瀏覽器能否做緩存。這里我們對強緩存和協商緩存做個demo來實驗下。

強緩存方案

代碼如下:

const express = require('express');
const app = express();
var options = {
etag: false, // 禁用協商緩存
lastModified: false, // 禁用協商緩存
setHeaders: (res, path, stat) => {
res.set('Cache-Control', 'max-age=10'); // 強緩存超時時間為10
},
};
app.use(express.static((__dirname + '/public'), options));
app.listen(3008);

PS:代碼來源自:圖解 HTTP 緩存,在做測試時,需要注意,強緩存下,刷新頁面是測不出來,點擊后返回方能有效。

強緩存效果

協商緩存方案

代碼如下:

const express = require('express');
const app = express();
var options = {
etag: true, // 開啟協商緩存
lastModified: true, // 開啟協商緩存
setHeaders: (res, path, stat) => {
res.set({
'Cache-Control': 'max-age=00', // 瀏覽器不走強緩存
'Pragma': 'no-cache', // 瀏覽器不走強緩存
});
},
};
app.use(express.static((__dirname + '/public'), options));
app.listen(3001);

效果如下:

協商緩存效果

總結

HTTP 為什么要緩存,為了分擔服務器壓力,也為了讓頁面加載更快。

有什么手段?HTTP 的強緩存和協商緩存,強緩存作用于那些不怎么變化的資源(如引入的庫,js,css等),協商緩存適用常更新的文件(例如 html)。

強緩存是什么?在 HTTP/1.0 中以 Expires 為依據,但它不準確,HTTP 協議升級成1.1后,用新標識符 Cache-Control 來代替,但兩者可以同時存在,Cache-Control 的權重更大一些。

協商緩存是什么?在 HTTP/1.0 中以 Last-Modified 為依據,即最后過期修改時間,它也不準確,HTTP升級成1.1后,用新標識符 ETag 來代替,兩者可同時存在,后者的權重更大。

無論是 Expires ,還是 Last-Modified,都是以時間點來依據,理論上是不出問題,但卻出問題了,所以就有了新的方案。

其中強緩存存在時,瀏覽器會采用強緩存標識符來緩存,當將強緩存設置為失效時,瀏覽器則會采用協商緩存來做緩存策略。

以上,即使筆者所理解的 HTTP 緩存。

責任編輯:姜華 來源: 今日頭條
相關推薦

2017-03-23 15:05:50

HTTP緩存Cookie

2017-03-23 14:51:21

HTTP緩存CDN緩存

2021-12-03 08:24:05

HttpTCP連接

2017-12-29 10:29:34

HTTP驅動程序

2020-09-11 10:55:10

useState組件前端

2012-12-31 11:22:58

開源開放

2021-02-19 23:08:27

軟件測試軟件開發

2018-11-23 11:17:24

負載均衡分布式系統架構

2021-02-28 09:47:54

軟件架構軟件開發軟件設計

2016-08-31 17:24:05

大數據分析

2025-03-10 13:11:00

2021-05-28 07:12:59

Python閉包函數

2020-10-14 08:04:28

JavaScrip

2012-11-05 15:22:59

康普光纜DCD

2021-09-01 07:21:39

Exporter指標監控

2022-11-28 08:44:46

死鎖面試線程

2016-11-28 09:00:10

瀏覽器瀏覽器緩存服務端

2022-08-21 17:35:31

原子多線程

2023-04-20 10:15:57

React組件Render

2025-11-20 10:25:07

點贊
收藏

51CTO技術棧公眾號

成人一二三四区| 免费看黄色aaaaaa 片| 麻豆最新免费在线视频| 国产成人综合精品三级| 91国产视频在线播放| 国产伦精品一区二区三区妓女| 欧美大片免费| 亚洲欧美日韩人成在线播放| 97久草视频| 中文字幕激情小说| 婷婷综合网站| 亚洲毛片在线免费观看| 中文字幕中文在线| 日韩av影片| 亚洲欧美偷拍卡通变态| 日本精品一区二区| 好吊色一区二区三区| 日韩精品一级二级 | 亚洲熟女少妇一区二区| 国产在线播放精品| 91精品福利视频| 久久久性生活视频| 日本三级在线视频| 久久久www免费人成精品| 99se婷婷在线视频观看| 最近日韩免费视频| 欧美亚洲三区| 国模精品系列视频| 性色av无码久久一区二区三区| 欧美精品momsxxx| 亚洲精品一区二区三区蜜桃下载| 在线观看国产福利| 99久久伊人| 日韩欧美在线免费观看| 欧美中日韩在线| 精产国品自在线www| 久久久久久久综合色一本| 国产乱码精品一区二区三区中文 | 免费亚洲电影| 午夜欧美一区二区三区在线播放| 男人j进女人j| 久久精品视频观看| 中文字幕一区二区在线播放| 日本成人黄色| 全色精品综合影院| 99久久精品免费看国产免费软件| eeuss一区二区三区| 国产精品视频a| 黄色小说综合网站| 国产欧美韩国高清| 亚洲天堂狠狠干| 麻豆精品一二三| 国产日韩精品入口| 亚洲视频一区在线播放| 久久99久久精品| 国产区精品视频| 一区二区三区黄| 精品一区二区三区香蕉蜜桃| 国产欧美精品日韩精品| 国产精品呻吟久久| 国产高清无密码一区二区三区| 91精品视频一区| 99精品视频免费看| 国产成人av电影在线观看| 亚洲xxxx在线| 日批免费在线观看| 久久夜色精品国产欧美乱极品| 免费av一区二区三区| 免费成人av电影| 亚洲国产精品传媒在线观看| 亚洲一卡二卡三卡| 黄色网在线免费看| 亚洲一区二区3| 国产极品尤物在线| 亚洲成人看片| 欧美肥妇毛茸茸| av不卡中文字幕| 天天躁日日躁狠狠躁欧美巨大小说 | 亚洲国产精品小视频| 理论片大全免费理伦片| 天海翼亚洲一区二区三区| 一区二区三区天堂av| 精品一区二区在线观看视频| **女人18毛片一区二区| 高清一区二区三区日本久| 一级片中文字幕| 蜜桃久久久久久久| y111111国产精品久久婷婷| 四虎影院在线播放| 中文字幕在线观看一区| 91午夜在线观看| 欧美三级精品| 91精品国产综合久久久久| 中文字幕人妻一区| jvid福利在线一区二区| 欧美老女人在线视频| 69国产精品视频免费观看| 精品中文字幕一区二区小辣椒| 成人自拍视频网站| 国产特黄在线| 亚洲一区二区三区四区五区中文 | 国产综合一区二区| 国产三区精品| 色三级在线观看| 午夜精品aaa| 91女神在线观看| 久久porn| 欧美成人黄色小视频| 国产精品视频一区在线观看| 国产真实乱偷精品视频免| 久久久久久高清| 香蕉成人app免费看片| 欧美午夜精品一区| 熟妇人妻久久中文字幕| 欧美在线三级| 国产欧美精品一区二区三区介绍| 人妻丰满熟妇av无码区hd| 国产精品国产自产拍在线| 2022亚洲天堂| jizz18欧美18| 久久成人这里只有精品| 日本妇乱大交xxxxx| av动漫一区二区| 成人在线视频一区二区三区| 久久久久黄色| 在线成人中文字幕| 中文字幕第四页| 99热精品国产| 国产妇女馒头高清泬20p多| 欧美日韩午夜电影网| 最近更新的2019中文字幕| youjizz在线视频| xnxx国产精品| 日本网站免费在线观看| 最新国产精品精品视频| 九九久久综合网站| 国产精品无码专区av免费播放| 国产农村妇女毛片精品久久麻豆 | 精品一区中文字幕| 日韩精品久久一区二区三区| 中文字幕资源网在线观看免费 | 日韩视频中文| 国产日韩精品久久| av在线理伦电影| 精品成人一区二区| 日本在线观看中文字幕| 成人午夜激情视频| 国产资源在线免费观看| 91亚洲无吗| 久久男人的天堂| 日本波多野结衣在线| 亚洲午夜在线观看视频在线| 动漫av在线免费观看| 欧美午夜电影在线观看| 粉嫩精品一区二区三区在线观看 | 懂色一区二区三区av片| 欧美大片黄色| 亚洲国产精品推荐| 日韩欧美成人一区二区三区| 久久嫩草精品久久久精品| 欧美女人性生活视频| 国产日产精品一区二区三区四区的观看方式 | 黄色在线免费看| 日韩欧美一级特黄在线播放| 久久久久成人片免费观看蜜芽| 成人av免费在线| 少妇高潮喷水久久久久久久久久| 精品免费在线| 91麻豆国产语对白在线观看| 免费污视频在线观看| 日韩成人av网址| 日本丰满少妇做爰爽爽| 亚洲欧洲三级电影| 成人啪啪18免费游戏链接| 亚洲毛片视频| 日韩免费电影一区二区| 综合久久伊人| 2019av中文字幕| 色大18成网站www在线观看| 欧美一级理论片| 日韩成人av毛片| 国产亚洲成年网址在线观看| 91亚洲精品久久久蜜桃借种| 国内精品久久久久久久影视蜜臀| 国产精品区一区二区三在线播放 | 国产欧美丝祙| 亚洲精品在线免费看| 97精品久久| 国产精品久久久久久久天堂| 综合久久2o19| 亚洲欧美精品suv| 国产伦子伦对白视频| 婷婷开心激情综合| 99成人在线观看| 91社区在线播放| 亚洲第一成肉网| 国产精品三上| 香蕉视频免费版| 国产在视频线精品视频www666| 亚洲sss综合天堂久久| 午夜激情在线播放| 不卡av电影院| 东凛在线观看| 日韩精品极品毛片系列视频| 国产精品探花视频| 色婷婷精品大在线视频| 亚洲av无码一区二区三区在线| 91丨porny丨蝌蚪视频| 99国产精品久久久久久| 亚洲一区二区免费看| 黄色一级片av| 成人免费在线播放| 精品久久久三级| 香蕉成人app| 国产美女久久精品香蕉69| 91av亚洲| 久久久久久伊人| www国产在线观看| 在线播放精品一区二区三区| 无码国产精品高潮久久99| 欧美精品在线观看播放| 成人a v视频| 精品国产老师黑色丝袜高跟鞋| 免费在线黄色网| 国产精品视频免费| 免费黄色片网站| 久久久久久久久久看片| 亚洲天堂av网站| 国产成人超碰人人澡人人澡| 成人性生交视频免费观看| 蜜臀av一区二区在线免费观看 | 男女啪啪的视频| 日韩片欧美片| 亚洲精品久久久久久一区二区| 人体久久天天| 国产综合18久久久久久| swag国产精品一区二区| 97伦理在线四区| 精品视频在线一区| 亚洲自拍欧美另类| 成人精品视频在线观看| 成人网在线视频| 亚洲欧洲日韩精品在线| 国产一区红桃视频| 欧美三级电影网址| 成人写真福利网| 精品国产亚洲一区二区三区在线| 成人春色激情网| 曰本一区二区| 91视频-88av| 国产精品欧美一区二区三区不卡| 成人h片在线播放免费网站| 涩涩涩久久久成人精品| 91久久综合亚洲鲁鲁五月天| 国产精品视频一区二区三区| 亚洲a级在线播放观看| 日韩欧美另类中文字幕| 国产精品区二区三区日本| 欧美日韩一区二区三区四区不卡| 久久久久久亚洲精品不卡4k岛国| 综合亚洲色图| 日本免费高清一区二区| 日韩夫妻性生活xx| 精品久久免费观看| 欧美日本中文| 99久re热视频精品98| 国产中文一区| 欧美xxxxx在线视频| 奇米色一区二区三区四区| 日韩va在线观看| 国产sm精品调教视频网站| 欲求不满的岳中文字幕| 久久精品一区二区三区四区| 免费观看特级毛片| 亚洲自拍偷拍av| 天天操中文字幕| 欧美日韩一区高清| 超碰在线人人干| 日韩精品中文字幕久久臀| 成人性爱视频在线观看| 久久国产精品久久久久久久久久| 国产蜜臀一区二区打屁股调教| 日韩av成人在线| 国产剧情一区二区在线观看| 国产一区免费在线观看| 日本高清免费电影一区| 久久久天堂国产精品| 午夜亚洲性色视频| 午夜精品免费看| 91免费小视频| 精品人妻伦九区久久aaa片| 天天影视涩香欲综合网| 中文字幕观看视频| 亚洲第一精品福利| 免费超碰在线| 欧美影院在线播放| 精品国产麻豆| 奇米影视首页 狠狠色丁香婷婷久久综合 | 蜜桃一区二区三区在线观看| 精品久久久久久无码人妻| 国产欧美一区二区精品久导航 | 日本在线视频站| 4438全国成人免费| 另类视频一区二区三区| 日韩av一区二区三区美女毛片| 国产精品v一区二区三区| 国产精品人人爽人人爽| av中文一区二区三区| 欧美成人黄色网| 欧美丝袜第三区| 日本亚洲一区| 久久久免费在线观看| 四虎影视成人精品国库在线观看| 久久精品中文字幕一区二区三区| 欧美极品一区二区三区| 精品日韩久久久| 久久久久久久网| 国产成人在线播放视频| 91精品免费观看| a天堂中文在线88| 国产97免费视| 天堂资源在线亚洲| 无码播放一区二区三区| 成人激情综合网站| 九九热精彩视频| 91精品国产综合久久久蜜臀粉嫩 | 国产精品免费成人| 97久久精品人人做人人爽50路| 九九视频在线免费观看| 欧美一区二区美女| 毛片在线视频| 成人免费看片视频| 久久一区二区三区喷水| 性生交免费视频| 中文在线免费一区三区高中清不卡| 日韩精品一区二区亚洲av| 精品一区二区电影| 玖玖在线播放| 裸模一区二区三区免费| 国产精品久久国产愉拍| 水蜜桃av无码| 天天综合网 天天综合色| 蜜桃av噜噜一区二区三区麻豆| 欧美高清视频在线| 亚洲精品a区| 亚洲理论电影在线观看| 高清不卡在线观看| 日本五十路女优| 日韩精品福利网站| 网友自拍亚洲| 亚洲国产一区二区精品视频| 蜜臂av日日欢夜夜爽一区| 奇米网一区二区| 4438x亚洲最大成人网| 在线看一级片| 国产精品免费区二区三区观看| 亚洲国产一区二区三区高清| 少妇一级淫片免费放播放| 精品人伦一区二区三区蜜桃网站| 深夜视频在线免费| 国产v综合ⅴ日韩v欧美大片| 欧美色图国产精品| 三级av免费观看| 亚洲精选在线视频| 人妻无码中文字幕| 日本不卡免费高清视频| 成人一二三区| 免费人成视频在线播放| 午夜视频在线观看一区二区| 邻居大乳一区二区三区| 国产精品视频中文字幕91| 亚洲精品成人影院| 娇妻高潮浓精白浆xxⅹ| 日韩欧美第一页| 欧美18hd| 国产一区二区高清视频| 日韩电影免费在线| 成人在线观看免费完整| 日韩成人在线电影网| 国语自产精品视频在线看抢先版结局| 日韩国产精品毛片| a美女胸又www黄视频久久| 在线观看亚洲黄色| 精品自拍视频在线观看| 国产麻豆精品久久| 可以看的av网址| 在线这里只有精品| 少女频道在线观看免费播放电视剧| 国产一级特黄a大片99| 老色鬼精品视频在线观看播放| 久久丫精品久久丫| 永久555www成人免费| 97人人澡人人爽91综合色| 国产三级三级三级看三级| 亚洲精品午夜久久久| 韩日在线视频| 国产精品久久久久久久久久久久冷 | 美女午夜精品| 不用播放器的免费av| 日韩欧美有码在线|