国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

通過 Node.js 實(shí)踐徹底搞懂強(qiáng)緩存和協(xié)商緩存

共 7468字,需瀏覽 15分鐘

 ·

2021-03-26 10:24

瀏覽器緩存是性能優(yōu)化非常重要的一個(gè)方案,合理地使用緩存可以提高用戶體驗(yàn),還能節(jié)省服務(wù)器的開銷。掌握好緩存的原理和并合理地使用無論對(duì)前端還是運(yùn)維都是相當(dāng)重要的。

什么是瀏覽器緩存

瀏覽器緩存(http 緩存) 是指瀏覽器在本地磁盤對(duì)用戶最近請(qǐng)求過的文檔進(jìn)行存儲(chǔ),當(dāng)訪問者再次訪問同一頁面時(shí),瀏覽器就可以直接從本地磁盤加載文檔。

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

  1. 減少了冗余的數(shù)據(jù)傳輸,節(jié)省帶寬,減少服務(wù)器壓力

  2. 加快了客戶端加載速度,提升用戶體驗(yàn)。

強(qiáng)緩存

強(qiáng)緩存不會(huì)向服務(wù)器發(fā)送請(qǐng)求,而是直接從緩存中讀取資源,強(qiáng)緩存可以通過設(shè)置兩種 HTTP Header 實(shí)現(xiàn):Expires 和 Cache-Control,這兩個(gè)頭部分別是HTTP1.0和HTTP1.1的實(shí)現(xiàn)。

Expires

Expires是HTTP1.0提出的一個(gè)表示資源過期時(shí)間的header,它描述的是一個(gè)絕對(duì)時(shí)間,由服務(wù)器返回。Expires 受限于本地時(shí)間,如果修改了本地時(shí)間,就會(huì)造成緩存失效。

Cache-Control

Cache-Control 出現(xiàn)于 HTTP/1.1,常見字段是max-age,單位是秒,很多web服務(wù)器都有默認(rèn)配置,優(yōu)先級(jí)高于Expires,表示的是相對(duì)時(shí)間。

例如Cache-Control:max-age=3600 代表資源的有效期是 3600 秒。取的是響應(yīng)頭中的 Date,請(qǐng)求發(fā)送的時(shí)間,表示當(dāng)前資源在 Date ~ Date +3600s 這段時(shí)間里都是有效的。Cache-Control 還擁有多個(gè)值:

  • no-cache 不直接使用緩存,也就是跳過強(qiáng)緩存。

  • no-store 禁止瀏覽器緩存數(shù)據(jù),每次請(qǐng)求資源都會(huì)向服務(wù)器要完整的資源。

  • public 可以被所有用戶緩存,包括終端用戶和 CDN 等中間件代理服務(wù)器。

  • private 只允許終端用戶的瀏覽器緩存,不允許其他中間代理服務(wù)器緩存。

要注意的就是no-cache和no-store的區(qū)別,no-cache是跳過強(qiáng)緩存,還是會(huì)走協(xié)商緩存的步驟,而no-store是真正的完全不走緩存,所有資源都不會(huì)緩存在本地

協(xié)商緩存

當(dāng)瀏覽器對(duì)某個(gè)資源的請(qǐng)求沒有命中強(qiáng)緩存,就會(huì)發(fā)一個(gè)請(qǐng)求到服務(wù)器,驗(yàn)證協(xié)商緩存是否命中,如果協(xié)商緩存命中,請(qǐng)求響應(yīng)返回的http狀態(tài)為304并且會(huì)顯示一個(gè)Not Modified的字符串。

協(xié)商緩存用的是【Last-Modified,If-Modified-Since】和【ETag、If-None-Match】這兩對(duì)Header來管理的。

注意??!協(xié)商緩存需要配合強(qiáng)緩存使用,使用協(xié)商緩存需要先設(shè)置Cache-Control:no-cache或者pragma:no-cache來告訴瀏覽器不走強(qiáng)緩存

Last-Modified、If-Modified-Since

這兩個(gè)Header是HTTP1.0版本提出來的,兩個(gè)字段配合使用。

Last-Modified 表示本地文件最后修改日期,瀏覽器會(huì)在請(qǐng)求頭帶上If-Modified-Since(上次返回的Last-Modified的值),服務(wù)器會(huì)將這個(gè)值與資源修改的時(shí)間匹配,如果時(shí)間不一致,服務(wù)器會(huì)返回新的資源,并且將 Last-Modified 值更新,作為響應(yīng)頭返回給瀏覽器。如果時(shí)間一致,表示資源沒有更新,服務(wù)器返回 304 狀態(tài)碼,瀏覽器拿到響應(yīng)狀態(tài)碼后從本地緩存中讀取資源。

但Last-Modified有幾個(gè)問題。

  • 文件雖然被修改了,但最終的內(nèi)容沒有變化,這樣文件修改時(shí)間還是會(huì)被更新

  • 有的文件修改頻率在秒以內(nèi),這時(shí)候以秒粒度來記錄就不夠了

  • 有的服務(wù)器無法精確獲取文件的最后修改時(shí)間。

所以出現(xiàn)了ETAG。

ETag、If-None-Match

在HTTP1.1版本中,服務(wù)器通過 Etag 來設(shè)置響應(yīng)頭緩存標(biāo)識(shí)。Etag 的值由服務(wù)端生成。在第一次請(qǐng)求時(shí),服務(wù)器會(huì)將資源和 Etag 一并返回給瀏覽器,瀏覽器將兩者緩存到本地緩存數(shù)據(jù)庫(kù)。在第二次請(qǐng)求時(shí),瀏覽器會(huì)將 Etag 信息放到 If-None-Match 請(qǐng)求頭去訪問服務(wù)器,服務(wù)器收到請(qǐng)求后,會(huì)將服務(wù)器中的文件標(biāo)識(shí)與瀏覽器發(fā)來的標(biāo)識(shí)進(jìn)行對(duì)比,如果不相同,服務(wù)器返回更新的資源和新的 Etag ,如果相同,服務(wù)器返回 304 狀態(tài)碼,瀏覽器讀取緩存。

流程總結(jié)

總結(jié)這幾個(gè)字段:

  • Cache-Control —— 請(qǐng)求服務(wù)器之前

  • Expires —— 請(qǐng)求服務(wù)器之前

  • If-None-Match (Etag) —— 請(qǐng)求服務(wù)器

  • If-Modified-Since (Last-Modified) —— 請(qǐng)求服務(wù)器

node實(shí)踐

本文用koa來做例子,因?yàn)閗oa是更輕量級(jí)的、更純凈的,本身并沒有捆綁任何中間件,相比express自帶了很多router、static等多種中間件函數(shù),koa更適合本文來做示例。

koa啟動(dòng)服務(wù)

秉著學(xué)習(xí)和更容易理解的宗旨,不使用koa-static和koa-router中間件,用koa簡(jiǎn)易實(shí)現(xiàn)web服務(wù)器來驗(yàn)證之前的結(jié)論。

  1. 創(chuàng)建項(xiàng)目

# 創(chuàng)建并進(jìn)入一個(gè)目錄并新建index.js文件
mkdir koa-cache
cd koa-cache
touch index.js

# 初始化項(xiàng)目
git init
yarn init

# 將 koa 安裝為本地依賴
yarn add koa
  1. koa代碼

/*app.js*/
const Koa = require('koa')
const app = new Koa()

app.use(async (ctx) => {
ctx.body = 'hello koa'
})

app.listen(3000, () => {
console.log('starting at port 3000')
})
  1. 啟動(dòng)服務(wù)

node index.js

這樣一個(gè)koa服務(wù)就起來了,訪問localhost:3000可以就看到hello koa。

為了方便調(diào)試,修改代碼不用重新啟動(dòng),推薦使用nodemon或者pm2啟動(dòng)服務(wù)。

原生koa實(shí)現(xiàn)簡(jiǎn)易靜態(tài)資源服務(wù)

實(shí)現(xiàn)一個(gè)靜態(tài)資源服務(wù)器關(guān)鍵點(diǎn)就是根據(jù)前端請(qǐng)求的地址來判斷請(qǐng)求的資源類型,設(shè)置返回的Content-Type,讓瀏覽器知道返回的內(nèi)容類型,瀏覽器才能決定以什么形式,什么編碼來讀取返回的內(nèi)容。

定義資源類型列表

const mimes = {
css: 'text/css',
less: 'text/css',
gif: 'image/gif',
html: 'text/html',
ico: 'image/x-icon',
jpeg: 'image/jpeg',
jpg: 'image/jpeg',
js: 'text/javascript',
json: 'application/json',
pdf: 'application/pdf',
png: 'image/png',
svg: 'image/svg+xml',
swf: 'application/x-shockwave-flash',
tiff: 'image/tiff',
txt: 'text/plain',
wav: 'audio/x-wav',
wma: 'audio/x-ms-wma',
wmv: 'video/x-ms-wmv',
xml: 'text/xml',
}

解析請(qǐng)求的資源類型

function parseMime(url) {
// path.extname獲取路徑中文件的后綴名
let extName = path.extname(url)
extName = extName ? extName.slice(1) : 'unknown'
return mimes[extName]
}

fs讀取文件

const parseStatic = (dir) => {
return new Promise((resolve) => {
resolve(fs.readFileSync(dir), 'binary')
})
}

koa處理

app.use(async (ctx) => {
const url = ctx.request.url
if (url === '/') {
// 訪問根路徑返回index.html
ctx.set('Content-Type', 'text/html')
ctx.body = await parseStatic('./index.html')
} else {
ctx.set('Content-Type', parseMime(url))
ctx.body = await parseStatic(path.relative('/', url))
}
})

這樣基本也就完成了一個(gè)簡(jiǎn)單的靜態(tài)資源服務(wù)器。然后在根目錄下新建一個(gè)html文件和static目錄,并在static下放一些文件。這時(shí)候的目錄應(yīng)該是這樣的:

|-- koa-cache
|-- index.html
|-- index.js
|-- static
|-- css
|-- color.css
|-- ...
|-- image
|-- soldier.png
|-- ...
...
...

這時(shí)候就可以通過localhost:3000/static訪問具體的資源文件了。

index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>test cache</title>
<link rel="stylesheet" href="/static/css/index.css" />
</head>
<body>
<div id="app">測(cè)試css文件</div>
<img src="/static/image/soldier.png" alt="" />
</body>
</html>
css/color.css
#app {
color: blue;
}

這時(shí)候打開localhost:3000,就能看到如下效果:

到這里基本的環(huán)境就都搭好了。接下來進(jìn)入驗(yàn)證階段。

強(qiáng)緩存

在沒有任何配置之前,可以看下network:

這時(shí)候無論是首次還是第幾次,都會(huì)向服務(wù)器請(qǐng)求資源。

注意!?。≡陂_始實(shí)驗(yàn)之前要把network面板的Disable cache勾選去掉,這個(gè)選項(xiàng)表示禁用瀏覽器緩存,瀏覽器請(qǐng)求會(huì)帶上Cache-Control: no-cache和Pragma: no-cache頭部信息,這時(shí)候所有的請(qǐng)求都不會(huì)走緩存

設(shè)置Expire

修改index.js中的app.use代碼段。

app.use(async (ctx) => {
const url = ctx.request.url
if (url === '/') {
// 訪問根路徑返回index.html
ctx.set('Content-Type', 'text/html')
ctx.body = await parseStatic('./index.html')
} else {
const filePath = path.resolve(__dirname, `.${url}`)
ctx.set('Content-Type', parseMime(url))
// 設(shè)置過期時(shí)間在30000毫秒,也就是30秒后
ctx.set('Expires', new Date(Date.now() + 30000))
ctx.body = await parseStatic(filePath)
}
})

用ctx.set('Expires', new Date(Date.now() + 30000)),設(shè)置過期時(shí)間為當(dāng)期時(shí)間的30000毫秒,也就是30秒后(后面的設(shè)置頭部信息都是這里修改)。

再訪問下localhost:3000,可以看到多了Expires這個(gè)Header。

后面在30秒之內(nèi)訪問都可以看到network的Size,css文件顯示的是disk cache,而image資源顯示的是from memory cache。這時(shí)候?yàn)g覽器是直接讀的瀏覽器緩存,并沒有請(qǐng)求服務(wù)器,可以嘗試把css和圖片文件改名稱或者刪除驗(yàn)證下,頁面顯示正常,說明之前的結(jié)論是沒錯(cuò)的。

Cache-Control

ctx.set('Cache-Control', 'max-age=300')設(shè)置300秒有效期,驗(yàn)證方式同上。

協(xié)商緩存

Last-Modified,If-Modified-Since

HTTP1.0協(xié)商緩存關(guān)鍵點(diǎn)就是根據(jù)客戶端請(qǐng)求帶的ifModifiedSince字段的時(shí)間和請(qǐng)求的資源對(duì)應(yīng)的修改時(shí)間來判斷資源是否有更新。

首先設(shè)置Cache-Control:no-cache, 使客戶端不走強(qiáng)緩存,再判斷客戶端請(qǐng)求是否有帶ifModifiedSince字段,沒有就設(shè)置Last-Modified字段,并返回資源文件。如果有就用fs.stat讀取資源文件的修改時(shí)間,并進(jìn)行對(duì)比,如果時(shí)間一樣,則返回狀態(tài)碼304。

 ctx.set('Cache-Control', 'no-cache')
const ifModifiedSince = ctx.request.header['if-modified-since']
const fileStat = await getFileStat(filePath)
if (ifModifiedSince === fileStat.mtime.toGMTString()) {
ctx.status = 304
} else {
ctx.set('Last-Modified', fileStat.mtime.toGMTString())
ctx.body = await parseStatic(filePath)
}

etag、If-None-Match

etag的關(guān)鍵點(diǎn)在于計(jì)算資源文件的唯一性,這里使用nodejs內(nèi)置的crypto模塊來計(jì)算文件的hash值,并用十六進(jìn)制的字符串表示。cypto的用法可以看nodejs的官網(wǎng) 。crpto不僅支持字符串的加密,還支持傳入buffer加密,作為nodejs的內(nèi)置模塊,在這里用來計(jì)算文件的唯一標(biāo)識(shí)再合適不過。

    ctx.set('Cache-Control', 'no-cache')
const fileBuffer = await parseStatic(filePath)
const ifNoneMatch = ctx.request.headers['if-none-match']
const hash = crypto.createHash('md5')
hash.update(fileBuffer)
const etag = `"${hash.digest('hex')}"`
if (ifNoneMatch === etag) {
ctx.status = 304
} else {
ctx.set('etag', etag)
ctx.body = fileBuffer
}

效果如下圖,第二次請(qǐng)求瀏覽器會(huì)帶上If-None-Match,服務(wù)器計(jì)算文件的hash值再次比較,相同則返回304,不同再返回新的文件。而如果修改了文件,文件的hash值也就變了,這時(shí)候兩個(gè)hash不匹配,服務(wù)器則返回新的文件并帶上新文件的hash值作為etag。

小結(jié)

通過以上代碼實(shí)踐了每個(gè)緩存字段的效果,代碼僅作為演示,生產(chǎn)的靜態(tài)資源服務(wù)器會(huì)更加復(fù)雜,例如etag不會(huì)每次都重新獲取文件來計(jì)算文件的hash值,這樣太費(fèi)性能,一般都會(huì)有應(yīng)的緩存機(jī)制,比如對(duì)資源的 last-modified 和 etag 值建立索引緩存。

總結(jié)

通常web服務(wù)器都有默認(rèn)的緩存配置,具體的實(shí)現(xiàn)可能也不大相同,像nginx、tomcat、express等web服務(wù)器都有相應(yīng)的源碼,有興趣的可以去閱讀學(xué)習(xí)。

合理的使用強(qiáng)緩存和協(xié)商緩存具體需要看項(xiàng)目的使用場(chǎng)景和需求。像目前常見的單頁面應(yīng)用,因?yàn)橥ǔ4虬际切律蒱tml與相應(yīng)的靜態(tài)資源依賴,所以可以對(duì)html文件配置協(xié)商緩存,而打包生成的依賴,例如js、css這些文件可以使用強(qiáng)緩存?;蛘咧粚?duì)第三方庫(kù)使用強(qiáng)緩存,因?yàn)榈谌綆?kù)通常版本更新較慢,可以鎖定版本。

node示例完整代碼可以在這里看 https://github.com/chen-junyi/code/blob/main/node/cache/koa2.js

??愛心三連擊

1.看到這里了就點(diǎn)個(gè)在看支持下吧,你的點(diǎn)贊,在看是我創(chuàng)作的動(dòng)力。

2.關(guān)注公眾號(hào)程序員成長(zhǎng)指北,回復(fù)「1」加入高級(jí)前端交流群!「在這里有好多 前端 開發(fā)者,會(huì)討論 前端 Node 知識(shí),互相學(xué)習(xí)」!

3.也可添加微信【ikoala520】,一起成長(zhǎng)。

“在看轉(zhuǎn)發(fā)”是最大的支持

瀏覽 56
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 九色国产| 黑人av在线观看| 免费a视频| 国产免费看片| 久久精品免费电影| 精品人妻无码一区二区三区| 性感91影院| 日本免费中文字幕| 男女拍拍免费视频| 日韩网站在线观看| www.一级片| 少妇白浆| 一区二区三区久久| 在线一区二区三区四区| 婷婷五月AV| 久久婷婷国产综合| 免费观看亚洲视频| 亚洲无码免费视频在线观看| 午夜毛片| 日韩AV电影在线观看| 丁香色色网| 免费看黄色的视频| 亚洲一级a| 十八禁福利网站| 黄色色情小说| 欧美成人网站在线观看| 在线永久看片免费的视频| 久久久91精品国产一区苍井空| 麻豆精品国产传媒| 免费高清无码视频在线观看| 国产激情电影| 亚洲中文字幕av天堂| 免费无码国产在线观看| 尤物免费视频| 在线视频日本| 爆乳一区二区三区| 亚洲天堂国产| 免费爱爱视频网站| 精品成人Av一区二区三区| www.青青草视频| 亚洲第一影院| 日本无码视频在线观看| 国产精品成人99一区无码| 亚洲免费观看高清完整版在va线观看| 亚洲最新无码| 亚洲中文中出| 亚洲Av无码午夜国产精品色软件| 欧美裸体视频| 天堂8在线19| 人人摸人人| 91精品久久人妻一区二区夜夜夜| 在线观看禁无码精品| 国产精品a久久久久| 红桃视频无码| www.日韩AV| 草草草视频| 欧美一级免费视频| 午夜一区二区三区免费| 精品人妻中文字幕视频| 国产曰韩欧美综合另类在线| 黄色福利视频| 高潮喷水在线观看| 亚洲激情婷婷| 亚洲综合免费观看高清| 蜜桃视频成人app| 在线无码电影| 影音先锋色av| 丁香五月激情啪啪啪| 大蕉网| 精品视频在线看| 久久久老熟女一区二区三区91| 安徽妇搡BBBB搡BBB| 人妻无码A| 色婷婷天天操天天干| 亚洲日本中文字幕| 国产激情视频在线观看| 久草福利在线| 色婷婷基地| 久热精品视频在线观看| 特极西西444WWW大胆无码| 女人AV天堂| 亚洲美女视频在线观看| 伊人蕉久| 日韩欧美操| 日韩AV一级| 黄色免费一级片| 9l视频自拍九色9l视频成人| 91热爆TS人妖系列| 亚洲精品影视| 刘玥一级婬片A片AAA| 精品人妻一区二区三区蜜桃| 超碰人人人人人人人人| 色欲色欲一区二区三区| 日日夜夜综合| 久久久久久久艹| 日本黄色片在线播放| 99精品亚洲| 99在线小视频| 国产精品色情A级毛片| 怡红院成人AV| 无码毛片在线观看| 欧美18禁| 人成视频免费观看| 日韩精品一区二区三区在线观看免费 | 午夜小电影| 国产小视频在线| 51黄片| 乱伦中文| 亚洲在线| 懂色av粉嫩AV蜜臀AV| 一线av| 久久精品99久久久久久久久| 国产熟妇码AV| 国产在线欧美在线| 国产主播精品在线| 91白丝在线观看| 综合插插| 亚洲视频在线观看中文字幕| 欧美性爱a视频| 五月丁香色色网| 热久久国产| 中文字幕在线无码视频| 日韩少妇无码| 91性爱视频在线观看| 精品无码一区二区三区蜜桃李宗瑞| 激情免费网站| 国产精品无码在线播放| 91肏屄视频| 色色热热| 日韩中文字幕在线观看视频| 亚洲无码成人在线| 久久午夜无码鲁丝片午夜精| 伊人网在线视频观看| 欧美成人精品AAA| 欧美激情综合| 国产一区二区三区18| 亚洲秘AV无码一区二区qq群 | 欧美午夜福利| 欧美日逼小视频| 影音先锋av色| 一级A片久久久免费直播间| 爱爱中文字幕| 国产一区久久| 美女免费AV| 91丨九色丨蝌蚪丨丝袜| 中文在线字幕免费观看| 乖我硬了让老子cao你小视频| 最近中文字幕mv第三季歌词 | 不雅一级| 天天爽夜夜爽AA片免费| 怡红院爽妇网| 波多野结衣福利视频| 日本色天堂| 少妇探花| 欧洲成人午夜精品无码区久久| 国产视频福利在线| 91爱爱网| www.水蜜桃| 91在线看| www、久久| 香蕉成人网站在线观看| 日韩小视频+国产| 四川美人搡BBw搡BBw| 国产在线视频91| 国内精品久久久久| 日韩人妻无码一区二区| h片在线播放| 久久久久亚洲AV成人片| 蜜桃在线一区| 久久久久久免费| 国产一级a毛一级a毛视频在线网站? | 天天色色天天| 久久国产欧美| 久久久久亚洲AV成人网人人软件 | 一级片黄色电影| 伊人成人网视频| 久久九九电影| 亚洲乱伦图片| www.av91| 国产女人在线| 性爱精品视频| 中文字幕日韩乱伦| 欧美日韩字幕| 激情视频免费在线观看| 亚洲无码电影网站| 加勒比综合在线| 搞黄免费视频视频| 成人三级片视频| 翔田千里一区二区三区精品播放| 亚洲精品一二| 四虎精品一区二区| 蜜柚AV| 手机看片福利永久| 日皮视频在线观看免费| 国产亚洲精品成人a| 天天视频国产| 中文字幕第二页| 丁香六月婷婷综合| 久久大伊人| 亚洲综合片| Av毛片| 尤物视频在线| 人人操人| 波多野结衣av在线观看窜天猴| 中文字幕乱在线| 亚洲成人777| 久久精品亚洲无码| 国产精品一二三区夜夜躁| 中文字幕免费视频在线播放| 黄色AV免费在线观看| 任你爽在线视频| 天天干夜夜操| 成人一区二区在线| 俺去啦俺去啦| 国产AV无码成人精品区| 香蕉伊人在线| 美少妇AV| 三级AV在线观看| 俺也去网站| 综合色区| 激情六月| 国产又黄又大又粗的视频| 奥门黄片| 亚洲精品久久久久久久久豆丁网| 国产一区免费| 国产一级操逼| 亚洲午夜激情电影| 国产三级片在线观看视频| 加勒比在线| 在线免费黄片| 自拍偷拍1| 日本牲交| 91蝌蚪网| 99在线免费视频| 天天日天天干天天爽| 激情婷婷网| 无码一区二区视频| 久久久久久久久久久久久久久久久久久久| 91蜜臀在线| 好男人WWW社区在线视频夜恋| 中文字幕Av在线| 99久久久| 在线v片| 91成人小视频| 3344gc在线观看入口| 超碰免费在线| 激情五月天亚洲| 内射视频在线免费观看| 翔田千里无码XXXXXX| 欧美激情视频在线| 中文在线A∨在线| 国产精品1区2区| 欧美A级视频| 成人亚洲精品一区二区三区| 精品人妻一区二区三区阅读全文| 欧美性爱91| 伊人久久狼人| 蜜臀久久精品久久久久| 91麻豆精品国产| 中文字幕成人电影| 大鸡巴操B视频| 综合色亚洲| 日本免费黄色片| 亚洲aV影院| 亚洲欧洲精品视频| A级片在线观看| 无码免费视频| 成人精品一区日本无码网站suv/| 亚洲精品无码中文字幕| 97国产| xxxx日韩| 色噜噜AV| 激情无码视频| www.操逼网| 亚洲日韩免费观看| 成人视频免费在线观看| 欧美一级性爱在线观看| 国产在线观看免费| 国产精品一二| 高清无码直接看| 丁香五月婷婷在线| 天天干夜夜操| 国产精品久久久久久99| A视频在线免费观看| 韩国GOGOGO高清| 中文字幕亚洲专区| 性爱福利视频| 欧美午夜乱伦电影| 国产精品v欧美精品v日韩| 操操操影院| 狼人色影院| 色撸撸在线视频| 国产一区二区三区免费视频| 国产中文人人国际| 在线欧美日韩| 亚洲va国产va天堂va久久| 无码日逼视频| 色婷婷中文| 日本欧美国产| 日韩精品观看| 五月天久久婷婷| 九九r在线精品观看视频| 中文字幕第23页| 成人网站免费在线观看| 夏目あきら被续侵犯7天| 久久国语| 国产一区二区精品| 五月天综合久久| 欧美天堂在线观看| 美女视频黄a视频全免费不卡| 三浦恵子一级婬片A片| 国产性生活| 男女草逼视频| 婷婷五月欧美| 亚洲一区二区在线| 91高清无码视频| 成片免费观看视频大全| h在线观看h| 日韩高清无码毛片| 久久三级视频| 亚洲黄色在线看| www.偷拍| 另类激情网| 国产日韩在线视频| 婷婷激情丁香五月天| 亚洲AV黄片| 日韩无码视频一区| 亚洲精品高清视频| 日韩欧美爱爱| A免费观看| 在线观看成年人视频| 久久久久久久久久久久久自慰小片 | 日韩色小说| 日本国产在线| 女人18特级毛片。| 久久夜色精品国产噜噜亚洲AV| 3D动漫精品啪啪一区二区免费| 熟女伦乱| 久久久无码精品亚洲| 四川妇搡BBBB搡BBBB| 欧美性性生交XXXXX无码| 四虎最新视频| 亚洲免费成人网| 欧美一区二区无码视频| 自拍三区| 91视频一区二区三区| 亚洲高清毛片一区二区| 欧美97| 色色网站视频| 日本精品无码a62v在线| 韩无码| 精品成人免费视频| 亚洲国产精品久久久久婷婷老年| 91人人操人人爽| 无码网址| 熟妇槡BBBB槡BBBB图| 老女人操逼视频| 天天爽日日澡| 黄片视频大全| 中文字幕av免费在线观看| 精品欧美无人区乱码毛片| 免费黄色一级视频| 丁香五月中文字幕| 日韩AV大片| 午夜福利片| 97色吧| 高清无码在线观看18| 亚洲视频A| 九色PORNY国产成人| 伦理无码| 欧美久草| 亚洲午夜激情| 啪啪网站免费| 成人免费AV| 免费激情| 粉嫩99精品99久久久久久特污| 国产成人AV在线| 免费草逼网站| 操逼操逼操逼| 日韩精品A片| 五月丁香在线视频| 四川BBB搡BBB爽爽爽电影 | 亚洲精品日日夜夜| 欧美婷婷五月天| 伊人偷拍视频| 一本色道久久综合熟妇| 特爽特黄特级特色视频| 国产免费小视频| 成人精品福利| 婷婷性爱| 91探花在线播放| 91精品人妻一区二区| 另类欧美色图| 日都一级A片| 安徽妇搡BBBB搡BBBB袄爱直播 | 欧美日韩字幕| 色色婷婷五月天| 91超碰免费在线| 天天影视综合网免费观看电视剧国产 | 美女91视频网站| 狠狠干老司机| 国产精品无码专区| 免费色色视频| 久草视频免费在线观看| 亚洲男人的天堂网| 欧美黄色激情视频网站| 色网站在线观看| 亚洲无码一区二区在线| 亚洲在线视频播放| 深爱激情五月婷婷| 手机AV在线| 中文字幕在线播放视频| 一品国精和二品国精的文化意义| 欧美疯狂做受XXXXX高潮| 免费黄色小视频在线观看| 北条麻妃无码视频在线观看| 一级a片在线播放| 国产高清在线视频| 99久久夜色精品国产亚洲| 精品免费囯产| www.99视频| 亚洲成人在线视频免费观看 | 国产高清一区二区三区| 日韩人妻系列| 亚洲av影院| 精东影业AV无码精品| 免费V片在线观看| 操少妇视频| 丁香久久婷婷| 91乱伦视频| 日韩91在线| 国产美女久久久| 一级特黄大片录像i| 中文在线A∨在线| 精品视频在线观看| 边吃边摸| 欧一美一婬一伦一区二区三区自慰国| 婷婷激情四射| 男女操逼视频网站| 免费的一级A片| 欧美成人在线观看视频| 欧美乱伦内射| 色欲影视插综合一区二区三区| 国产免费a片| 91久久偷拍视频| 国产精品h| 亚洲精选中文字幕| 日屄在线观看| 无码人妻丰满熟妇区毛片视频| 一区二区三区四区五区| 精品无码一区二区人妻久久蜜桃| 青青超碰| 中文资源在线观看| 精品久| 欧美啪啪啪| 8050午夜一级| 黄色日逼视频| 伊人视频在线| 欧美成人69| 一区二区三区国产| 特級西西444WWw高清大膽| 韩日综合在线| 超碰99在线| 亚洲国产日本| 久久久久久久久久久久国产精品 | 99久久精品一区二区成人| 成人三级AV| 国产人妻一区二区精选| 一本一道vs波多野结衣| 中文字幕第二页| 一本加勒比HEZYO东京热无码| 一级黄片学生妹| 亲子乱一区二区三区视频| 欧美特级视频| 午夜影院操| 特黄AV| 香蕉伊人视频| 北条麻妃无码av| 天天干天天射天天操| 人人操人人搞| 啪啪视频m3u8| 91丨人妻丨国产丨丝袜| 婷婷五月天网| 操逼视频在线免费看| 北条麻妃一区二区三区-免费免费高清观看 | 2021天天操| 久草大香蕉在线视频| 中文字幕乱妇无码Av在线| 五月天国产| 婷婷丁香五月网| 91成人片| 色五月天婷婷| 逼特逼在线视频| 精品亚洲一区二区三区| 欧美人人操| 欧美第二页| 4388亚洲最大| 人人狠狠综合婷婷| 口爆av| 日韩无码视频免费| 免费观看黄色一级片| 日本Sm/调教/捆绑/紧缚| 午夜天堂精品久久| 久草com| 瘦精品无码一区二区三区四区五区六区七区八区 | 欧美性受XXXX黑人XYX性爽一| 福利一区二区| 成人三级视频在线观看| 欧性猛交ⅩXXX乱大交| 欧美一级特黄AAAAAA片在线视频| 久草超碰| 日本a在线观看| 奥门黄片| 欧一美一伦一A片| 久久av电影| 国产日本在线| 真实白嫖91探花无码| 夏目あきら被续侵犯7天| 日韩高清AV| 四lll少妇BBBB槡BBBB| 北条麻妃在线视频| 国产精品久久久久的角色| 欧美一区二区在线观看| 操逼在线播放| 人妻精品无码| 三级国产在线| 午夜福利干B在线免费小视频| 久久性爱网| 日韩三级av| 亚洲男人av| 亚洲高清无码免费在线观看 | 日韩在线观看AV| 大香蕉中文| 微拍福利一区| 中文字幕日韩亚洲| 影音先锋婷婷| 欧美日韩视频一区二区三区| 国产在线观看国产精品产拍| 久色精品| 蜜臀久久99精品久久久| 中字幕视频在线永久在线观看免费| 成人黄色免费视频| 韩国无码一区二区三区| 欧美人妻日韩精品| 2021天天夜日| 国产乱在线| 五月av| 九九热热| 婷婷久久网| 日韩成人av在线| www.啪| 成人国产欧美日韩在线视频| 婷婷激情四射| 日本免费视频| 熟女AV888| 亚洲天堂在线视频播放| 成人在线视频一区| 2025精品精品视频| 韩国无码人妻| 亚洲熟妇无码| 国产精品免费观看久久久久久久久| 黄色免费AV| 国产精品一级无码免费播放| 国产一区二区三区在线| 69成人精品国产| 69色综合| 日韩爆乳在线| 神马午夜三级| 日本成人免费电影| 伊人久久狼人| 春色激情| 亚洲精品无码久久| 欧美成人免费电影| 91人妻无码精品一区二区三区| 精品一区二区三区无码| 黄色视频网站亚洲| 天天操天天操免费视频| 国产精品久久久久毛片SUV| 99无码国产成人精品| 大鸡巴免费视频| 黄色视频A| 黑人在线播放| 俩小伙3p老熟女露脸| 日韩一级A片| 国产欧美自拍| 中文无码在线视频| 热久久免费| 日韩性爱A片| 在线观看18s| 国产超级无码高清在线视频观看| 亚洲福利一区二区| 国产无码AV| 欧洲激情网| 大香蕉伊人影院| 青青青草视频在线| 欧美a片在线| 日本中文无码视频| 亚洲国产成人视频| 国模无码在线| 性毛片| 久久任你操| 亚洲天堂中文字幕| 天堂网在线视频| 中文无码在线视频| aaa免费视频| 久久国产精品一区二区三区| 国产1区2区3区中文字幕| 国产欧美一区二区三区视频| 在线二区| 手机免费AV| 亚洲啪啪| 制服丝袜大香蕉| 五月无码| 日韩人妻码一区二区三区| 亚洲成人无码精品| 欧美黄片一区二区| 欧美在线A| 色色色免费视频| 亚洲中文字幕播放| 成人AV婷婷| 亚洲无码高清视频| 日韩人妻精品无码| 欧美级毛片一进一出| 最好看的MV中文字幕国语| 久久伊人精品| 艹逼国产| 中文字幕15页| 玖玖爱免费视频| 3D动漫精品啪啪一区二区竹笋| 成年人视频免费| av亚洲波多野结衣白嫩水多波| 午夜福利视频无码| 人人操人人看人人干| 婷婷丁香人妻天天爽| 一区二区三区操逼| 天堂A片电影网站在线观看| 91白浆| 中文字幕视频| 在线成人网站| 伊人色五月| 国产suv精品一区二区| 国产成人精品一区二区三区| 2018天天干天天操| 国产精品1区| 91亚洲国产AⅤ精品一区二区| 亚洲无码高清一区| 三级片网站在线播放| 欧美深夜福利| 9l视频自拍蝌蚪9l成人| 精品无码一区二区Av蜜桃| 蜜桃系列一区二区精品| 中文字幕VA| 麻豆AV免费看| 超碰一区二区三区| 亚洲日逼网| 国产aaaaaaaaaa| 色综合久久88色综合| 五月激情婷婷网| 人妻丰满精品一区二区| 日本草逼网| 免费色色网站| 波多野吉衣av| 亚洲黄色小电影| 五月天成人导航| 日韩日韩日韩日韩日韩| 黄色一级大片在线免费看国产| 97人妻精品一区二区三区软件| 水蜜桃一区二区三区| 精品国精品自拍自在线| 欧美成人免费观看| 强伦人妻一区二区三区视频| 操逼免费视频网站| 亚洲高清无码视频大全| 大地影视官网第三页入口| 亚洲3p| 色视频免费在线观看| www.xxx国产| 久久久波多野结衣| 国內精品久久久久久久| 日本一本草久p| 成人性爱视频网站| 亚洲九九视频| 九九九九国产| 亚州高清无码视频| 狠狠色狠狠干| 俺来也俺也啪WWW色| 成人国产精品在线看| 中文字幕+乱码+中文乱码电影| 青青伊人久久| 人人插人人干| 国产黄色网页| 无码第一页| 91AV电影| 亚洲在线视频| 日韩大片免费观看| 亚洲中文自拍| 天天综合网站| 大香蕉在线播| 国产精品午夜在线| 欧美三级网址| 狠狠躁日日躁夜夜躁A片男男视频 精品无码一区二区三区蜜桃李宗瑞 | 日韩一区二区免费看| 操逼资源| 四虎亚洲| 日韩精品一区二区亚洲AV观看| 日本精品在线播放| 亚洲男人的天堂视频网在线观看+720P | 国产一级二级三级片| 男人天堂新地址| 国产在线视频91| 色网站在线观看| 国产伊人久久| 97人妻人人澡人人爽人人精品 | 国产精品久久久久国产A级| 国产人妻精品一区二区三区不卡| 尤物视频入口| 一本一道波多野结衣潮喷视频| 国产美女做爱视频| 亚洲电影在线| 北条麻妃在线不卡| 一区二区三区网| 人妻体内射精一区二区| 亚洲十八禁| 亚洲秘无码一区二区三区胖子| 一本一道vs波多野结衣| 国产三级片视频在线观看| 亚洲AV永久无码精品国产精| 九九香蕉网| 精品美女视频| 亚洲黄色视频网站在线观看| 亚洲激情四射| 玖玖国产| 国产无码电影| 中文字幕高清| 色婷婷亚洲色| 黑人精品XXX一区一二区| 在线成人AV| 色情一级AA片免费观看| 丰满人妻一区二区| 79色色| 亚洲精品久| 偷偷撸在线| 欧美A片免费观看| 日韩porn| 国产精品永久久久久久久久久| 91无码人妻一区二区| 日韩免费一级| 91在线无码精品秘入口动作| yw在线观看| 欧美性爱永久| 欧美日韩岛国| 亚洲欧美在线视频观看| 免费二区| 臭小子晚上让你爽个够视频| 九九国产精品| 国产无码专区| 国产精品无码永久免费A片| 午夜日屄| 亚洲熟女一区二区| 开心色情| 水蜜桃视频免费观看| 激情五月天成人| 亚洲三级视频| 国偷自产视频一区二区久| 日韩亚洲在线视频| 天天天天天天天干| 亚洲午夜久久久久久久久红桃| yw·163.爆乳尤物com| 久久狠| 九九色在线视频| 国产在线1| 一级无码在线观看| 91网站免费看| 久久五月婷| 激情一一区二区三区| 日本AⅤ中文字幕| 日韩精品视频免费在线观看| 日本视频一区二区| jk无码| 欧美精品久久久| 卡一卡二卡三| 亚洲AV无码成人H动漫| 国产美女AV| 国产灬性灬淫灬欲水灬| av在线免费播放| 日本精品久久| 国产视频97| 91久久精品无码一区| 日韩三级在线观看| 国产熟妇| 伊人综合久久| 91理伦| 国产做受91一片二片老头| 自拍偷拍视频网站| 欧洲三级片| 中国毛片网站| 动漫精品一区二区| 欧美一级黄| 四川w搡BBB搡wBBB搡| 小H片在线观看| 亚洲AV无码成人精品区h麻豆| 日本在线一区| 婷婷久久久久| 牛牛av| 色就是亚洲| 人人操人人摸人人爽| 久久久久久性爱| 91站街农村熟女露脸| 日韩大码无码| 精品国内视频| 天天色影院| 午夜国产码网站码| 在线看片AV| 国产精品成| 黄色电影网站在线观看| yw·163.爆乳尤物com| 亚洲天堂人妻少妇| 51国产视频| a片免费网站| 在线无码免费观看| 99极品视频| 美日韩一区| 午夜福利三级| 日本欧美在线| 国产潮吹| 中文字幕少妇| 好吊妞在线| 俺也来俺也去| 三级片网页| 柠檬AV导航| 色综合色综合| 国精产品秘一区二区| 蜜芽视频| 国产AV日韩AV| 亚洲偷| 亚洲精品国产精品乱码不卡√香蕉| 翔田千里无码A片| 一级欧美一级日韩片| 操逼视频网| 爽爽午国产浪潮AV性色www | 九热大香蕉| 国产亚洲无码激情前后夹击| 999一区二区三区| 激情五月综合| 欧美特黄AAAAAA| 亚洲中文字幕人妻| 激情色播| 就爱操逼网| AⅤ在线观看| 3344gc在线观看入口| 东京热久久综合色五月老师| 97精品超碰一区二区三区| 天天操网址| 日本欧美在线| 亚洲成人动漫在线| 亚洲人操逼视频| 日日夜夜精品视频| 天天摸天天肏| 大香蕉色伊人| 日韩A片无码ⅩXXXX| 欧美成人色| 四川BBB嫩BBBB爽BBBB| 午夜福利亚洲| 中国A级片| 国产免费内射| 国产精品成人无码| 99热加勒比| 五月丁香婷婷啪啪| 亚洲黄片免费| 2026无码视频| 天堂网av2014| 91免费视频观看| 免费无码A片在线观看全| 日本免费不卡视频| 亚洲无码一二三区| 99极品视频| 亚洲成人电影无码| 人人操在线播放| 国产操屄网| 国产精品美女毛片j酒店| 超碰在线观看91| 国产骚逼视频| 少妇搡BBBB搡BBB搡造水多/ | 国产黄色视频在线免费观看| 另类老妇性bbwbbwbbw| 午夜福利视频3000| 欧美日韩中文字幕在线| 激情五月天小说网| 精品永久免费| 大香蕉精品视频在线| 国产激情内射| 狠狠插视频| 天天干天天爽| 久久综合大香蕉| 欧美黄色免费观看| 狠狠撸天天日| 中文字幕视频免费| 97人人爽| 94精品人人人| 亚洲www在线|