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

Axios 如何緩存請求數(shù)據(jù)?

存儲 存儲軟件
本文將介紹在 Axios 中如何通過增強默認適配器來緩存請求數(shù)據(jù)。

[[392358]]

本文轉(zhuǎn)載自微信公眾號「全棧修仙之路」,作者阿寶哥。轉(zhuǎn)載本文請聯(lián)系全棧修仙之路公眾號。  

在 Axios 如何取消重復請求? 這篇文章中,阿寶哥介紹了在 Axios 中如何取消重復請求及 CancelToken 的工作原理。本文將介紹在 Axios 中如何通過增強默認適配器來緩存請求數(shù)據(jù)。那么為什么要緩存請求數(shù)據(jù)呢?這是因為在緩存未失效時,我們可以直接使用已緩存的數(shù)據(jù),而不需發(fā)起請求從服務端獲取數(shù)據(jù),這樣不僅可以減少 HTTP 請求而且還能減少等待時間從而提高用戶體驗。

因為本文將使用 Axios 提供的默認適配器來實現(xiàn)緩存請求數(shù)據(jù)的功能,所以如果你對 Axios 適配器還不熟悉的話,建議先閱讀 77.9K 的 Axios 項目有哪些值得借鑒的地方 這篇文章。為了讓大家能夠更好地理解后續(xù)的內(nèi)容,我們先來看一下整體的流程圖:

上圖中藍色部分的工作流程,就是本文的重點。接下來,阿寶哥將從如何設(shè)計緩存開始,帶大家一起來開發(fā)緩存請求數(shù)據(jù)的功能。

一、如何設(shè)計緩存

在計算中,緩存是一個高速數(shù)據(jù)存儲層,其中存儲了數(shù)據(jù)子集,且通常是 短暫性 存儲,這樣日后再次請求該數(shù)據(jù)時,速度要比訪問數(shù)據(jù)的主存儲位置快。通過緩存,你可以高效地重用之前檢索或計算的數(shù)據(jù)。了解完緩存的作用之后,我們來設(shè)計緩存的 API:

  • get(key):從緩存中獲取指定 key 對應的值;
  • delete(key):從緩存中刪除指定 key 對應的值;
  • clear():清空已緩存的數(shù)據(jù);
  • set(key, value, maxAge):保存鍵值對,同時支持設(shè)置緩存的最大時間,即 maxAge 單位為毫秒。

基于上述的緩存 API,我們可以實現(xiàn)一個簡單的緩存功能,具體代碼如下所示:

  1. const MemoryCache = { 
  2.   data: {}, 
  3.   set(key, value, maxAge) { // 保存數(shù)據(jù) 
  4.     this.data[key] = { 
  5.       maxAge: maxAge || 0, 
  6.       value, 
  7.       now: Date.now(), 
  8.      }; 
  9.   }, 
  10.   get(key) { // 從緩存中獲取指定 key 對應的值。 
  11.     const cachedItem = this.data[key]; 
  12.     if (!cachedItem) return null
  13.     const isExpired = Date.now() - cachedItem.now > cachedItem.maxAge; 
  14.     isExpired && this.delete(key); 
  15.     return isExpired ? null : cachedItem.value; 
  16.   }, 
  17.   delete(key) { // 從緩存中刪除指定 key 對應的值。 
  18.     return delete this.data[key]; 
  19.   }, 
  20.   clear() { // 清空已緩存的數(shù)據(jù)。 
  21.     this.data = {}; 
  22.   }, 
  23. }; 

其實除了自定義緩存對象之外,你也可以使用成熟的第三方庫,比如 lru-cache。

LRU 緩存淘汰算法就是一種常用策略。LRU 的全稱是 Least Recently Used,也就是說我們認為最近使用過的數(shù)據(jù)應該是是「有用的」,很久都沒用過的數(shù)據(jù)應該是無用的,內(nèi)存滿了就優(yōu)先刪那些很久沒用過的數(shù)據(jù)。

二、如何增強默認適配器

Axios 引入了適配器,使得它可以同時支持瀏覽器和 Node.js 環(huán)境。對于瀏覽器環(huán)境來說,它通過封裝 XMLHttpRequest API 來發(fā)送 HTTP 請求,而對于 Node.js 環(huán)境來說,它通過封裝 Node.js 內(nèi)置的 http 和 https 模塊來發(fā)送 HTTP 請求。

在介紹如何增強默認適配器之前,我們先來回顧一下 Axios 完整請求的流程:

了解完 Axios 完整請求的流程之后,我們再來看一下 Axios 內(nèi)置的 xhrAdapter 適配器,它被定義在 lib/adapters/xhr.js 文件中:

  1. // lib/adapters/xhr.js 
  2. module.exports = function xhrAdapter(config) { 
  3.   return new Promise(function dispatchXhrRequest(resolve, reject) { 
  4.     var requestData = config.data; 
  5.     var requestHeaders = config.headers; 
  6.  
  7.     var request = new XMLHttpRequest(); 
  8.     // 省略大部分代碼 
  9.     var fullPath = buildFullPath(config.baseURL, config.url); 
  10.     request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); 
  11.     // Set the request timeout in MS 
  12.     request.timeout = config.timeout; 
  13.  
  14.     // Listen for ready state 
  15.     request.onreadystatechange = function handleLoad() { ... } 
  16.  
  17.     // Send the request 
  18.     request.send(requestData); 
  19.   }); 
  20. }; 

很明顯 xhrAdapter 適配器是一個函數(shù)對象,它接收一個 config 參數(shù)并返回一個 Promise 對象。而在 xhrAdapter 適配器內(nèi)部,最終會使用 XMLHttpRequest API 來發(fā)送 HTTP 請求。為了實現(xiàn)緩存請求數(shù)據(jù)的功能,我們就可以考慮通過高階函數(shù)來增強 xhrAdapter 適配器的功能。

2.1 定義輔助函數(shù)

2.1.1 定義 generateReqKey 函數(shù)

在增強 xhrAdapter 適配器之前,我們先來定義一個 generateReqKey 函數(shù),該函數(shù)用于根據(jù)當前請求的信息,生成請求 Key;

  1. function generateReqKey(config) { 
  2.   const { method, url, params, data } = config; 
  3.   return [method, url, Qs.stringify(params), Qs.stringify(data)].join("&"); 

通過 generateReqKey 函數(shù)生成的請求 key,將作為緩存項的 key,而對應的 value 就是默認 xhrAdapter 適配器返回的 Promise 對象。

2.1.2 定義 isCacheLike 函數(shù)

isCacheLike 函數(shù)用于判斷傳入的 cache 參數(shù)是否實現(xiàn)了前面定義的 Cache API,利用該函數(shù),我們允許用戶為每個請求自定義 Cache 對象。

  1. function isCacheLike(cache) { 
  2.  return !!(cache.set && cache.get && cache.delete && cache.clear   
  3.   && typeof cache.get === 'function' && typeof cache.set === 'function'  
  4.     && typeof cache.delete === 'function' && typeof cache.clear === 'function' 
  5.   ); 

2.2 定義 cacheAdapterEnhancer 函數(shù)

為了讓用戶能夠更靈活地控制數(shù)據(jù)緩存的功能,我們定義了一個 cacheAdapterEnhancer 函數(shù),該函數(shù)支持兩個參數(shù):

adapter:預增強的 Axios 適配器對象;

options:緩存配置對象,該對象支持 4 個屬性,分別用于配置不同的功能:

maxAge:全局設(shè)置緩存的最大時間;

enabledByDefault:是否啟用緩存,默認為 true;

cacheFlag:緩存標志,用于配置請求 config 對象上的緩存屬性;

defaultCache:用于設(shè)置使用的緩存對象。

了解完 cacheAdapterEnhancer 函數(shù)的參數(shù)之后,我們來看一下該函數(shù)的具體實現(xiàn):

  1. function cacheAdapterEnhancer(adapter, options) { 
  2.   const { maxAge, enabledByDefault = true
  3.     cacheFlag = "cache", defaultCache = MemoryCache, 
  4.   } = options; 
  5.    
  6.   return (config) => { 
  7.     const { url, method, params, forceUpdate } = config; 
  8.     let useCache = config[cacheFlag] !== undefined && config[cacheFlag] !== null 
  9.         ? config[cacheFlag] 
  10.         : enabledByDefault; 
  11.       if (method === "get" && useCache) { 
  12.         const cache = isCacheLike(useCache) ? useCache : defaultCache; 
  13.         let requestKey = generateReqKey(config);  // 生成請求Key 
  14.         let responsePromise = cache.get(requestKey); // 從緩存中獲取請求key對應的響應對象 
  15.         if (!responsePromise || forceUpdate) { // 緩存未命中/失效或強制更新時,則重新請求數(shù)據(jù) 
  16.            responsePromise = (async () => { 
  17.              try { 
  18.                return await adapter(config);  // 使用默認的xhrAdapter發(fā)送請求 
  19.              } catch (reason) { 
  20.                  cache.delete(requestKey); 
  21.                  throw reason; 
  22.                 } 
  23.            })(); 
  24.            cache.set(requestKey, responsePromise, maxAge);  // 保存請求返回的響應對象 
  25.            return responsePromise; // 返回已保存的響應對象 
  26.        } 
  27.        return responsePromise; 
  28.      } 
  29.      return adapter(config); // 使用默認的xhrAdapter發(fā)送請求 
  30.    }; 

以上的代碼并不會復雜,核心的處理邏輯如下圖所示:

2.3 使用 cacheAdapterEnhancer 函數(shù)

2.3.1 創(chuàng)建 Axios 對象并配置 adapter 選項

  1. const http = axios.create({ 
  2.   baseURL: "https://jsonplaceholder.typicode.com"
  3.   adapter: cacheAdapterEnhancer(axios.defaults.adapter, { 
  4.     enabledByDefault: false, // 默認禁用緩存 
  5.     maxAge: 5000, // 緩存時間為5s 
  6.   }), 
  7. }); 

2.3.2 使用 http 對象發(fā)送請求

  1. // 使用緩存 
  2. async function requestWithCache() { 
  3.   const response = await http.get("/todos/1", { cache: true }); 
  4.   console.dir(response); 
  5.  
  6. // 不使用緩存 
  7. async function requestWithoutCache() { 
  8.   const response = await http.get("/todos/1", { cache: false }); 
  9.   console.dir(response); 

其實 cache 屬性除了支持布爾值之外,我們可以配置實現(xiàn) Cache API 的緩存對象,具體的使用示例如下所示:

  1. const customCache = { get() {/*...*/}, set() {/*...*/}, delete() {/*...*/}, clear() {/*...*/}}; 
  2.        
  3. async function requestForceUpdate() { 
  4.   const response = await http.get("/todos/1", { 
  5.     cache: customCache, 
  6.     forceUpdate: true
  7.   }); 
  8.   console.dir(response); 

好了,如何通過增強 xhrAdapter 適配器來實現(xiàn) Axios 緩存請求數(shù)據(jù)的功能已經(jīng)介紹完了。由于完整的示例代碼內(nèi)容比較多,阿寶哥就不放具體的代碼了。感興趣的小伙伴,可以訪問以下地址瀏覽示例代碼。

完整的示例代碼:https://gist.github.com/semlinker/b8a7bd5a0a16c2d04011c2c4a8167fbd

三、總結(jié)

本文介紹了在 Axios 中如何緩存請求數(shù)據(jù)及如何設(shè)計緩存對象,基于文中定義的 cacheAdapterEnhancer 函數(shù),你可以輕松地擴展緩存的功能。在后續(xù)的文章中,阿寶哥將會介紹在 Axios 中如何實現(xiàn)請求重試功能,感興趣的小伙伴不要錯過喲。

 

責任編輯:武曉燕 來源: 全棧修仙之路
相關(guān)推薦

2020-10-20 09:51:51

Vue 3 的組合

2020-10-20 09:30:13

Vue 3 API 數(shù)據(jù)

2021-04-22 05:37:14

Axios 開源項目HTTP 攔截器

2021-03-27 22:21:48

HTTPPython數(shù)據(jù)

2011-04-21 09:59:48

WEBjavascript

2021-04-06 06:01:11

AxiosWeb 項目開發(fā)

2021-07-27 14:50:15

axiosHTTP前端

2024-08-27 08:55:32

Axios底層網(wǎng)絡(luò)

2024-08-12 12:32:53

Axios機制網(wǎng)絡(luò)

2024-06-05 08:42:24

2019-07-30 11:17:18

系統(tǒng)數(shù)據(jù)安全

2022-02-15 08:51:21

AjaxFetchAxios

2013-08-20 13:22:35

PythonGo編程語言

2021-10-08 10:05:10

數(shù)據(jù)包三次握手HTTP

2020-11-09 11:10:56

前端api緩存

2018-03-28 09:26:43

數(shù)據(jù)庫緩存層優(yōu)化

2021-05-19 09:29:52

VueAxios異步請求

2022-07-03 20:53:23

React18請求數(shù)據(jù)

2018-07-30 16:31:00

javascriptaxioshttp

2010-01-08 14:41:24

JSON 緩存數(shù)據(jù)
點贊
收藏

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

日韩动漫一区| 九义人在线观看完整免费版电视剧| 国语精品一区| 亚洲精品久久久久久久久久久久久| 国产九九九九九| 免费a在线观看| 看片网站欧美日韩| 久久人人爽人人| 我不卡一区二区| 一区二区在线视频观看| 在线观看不卡一区| 欧美亚洲黄色片| 国产网站在线播放| 高清成人免费视频| 国产精品自拍偷拍| 豆国产97在线 | 亚洲| 欧美少妇性xxxx| 精品国产伦理网| 亚洲国产日韩欧美在线观看| av漫画网站在线观看| 国产精品久久久99| 久久久久久久有限公司| 国产美女永久免费| 老牛嫩草一区二区三区日本| 欧美疯狂xxxx大交乱88av| 日韩人妻一区二区三区| youjizzjizz亚洲| 欧美日韩大陆一区二区| 黄色免费观看视频网站| 欧美四级在线| 亚洲视频网在线直播| 欧美一区观看| 日产精品久久久久久久性色| 顶级嫩模精品视频在线看| 91精品久久久久久久久青青| 精品欧美一区二区三区免费观看| 欧美91大片| 精品国产网站地址| 欧洲av一区二区三区| 精品网站aaa| 欧美v国产在线一区二区三区| 亚洲欧美久久久久| 日韩经典一区| 日本道免费精品一区二区三区| 亚洲熟妇无码一区二区三区导航| 直接在线观看的三级网址| 中文字幕一区二区三区乱码在线| 久久久久一区二区三区| 免费av网站在线播放| 国产精品亚洲成人| 91在线观看免费高清| 国产又黄又粗又长| 久久精品国产在热久久| 成人av在线亚洲| 91欧美日韩麻豆精品| 蜜芽一区二区三区| 国产精品久久久久久久久久久久久久 | 国产污视频在线播放| 一二三四区精品视频| 国内精品国产三级国产99| 黄网页在线观看| 亚洲情趣在线观看| 一本大道东京热无码aⅴ| 中文字幕中文字幕在线中高清免费版| 国产丰满美女做爰| 亚洲视屏一区| 国模叶桐国产精品一区| 日产电影一区二区三区| 国产精品久久久久毛片大屁完整版| 国产+人+亚洲| 日韩在线播放中文字幕| 日韩二区三区四区| 91精品国产综合久久香蕉922| 国产精品久久久久久久久久久久久久久久久久| 久久天堂成人| 国产欧美一区二区| 国产suv一区二区| 成人av在线网站| 欧美日韩国产高清视频| 欧美激情午夜| 亚洲制服丝袜一区| 成年网站在线免费观看| av成人亚洲| 在线播放91灌醉迷j高跟美女| 免费国偷自产拍精品视频| 红杏视频成人| 亚洲一区二区黄| 亚洲区一区二区三| 亚洲小说欧美另类婷婷| 日本成人精品在线| 国产又黄又爽视频| av一区二区三区黑人| 你懂的网址一区二区三区| 2021av在线| 亚洲成a人片在线观看中文| 国产无套内射久久久国产| 欧美综合影院| 亚洲第一精品夜夜躁人人爽| 先锋影音av在线| 亚洲午夜黄色| 国产精品自产拍在线观看| 亚洲精品国产精| 国产欧美日韩在线| 成年人网站国产| 福利一区二区| 日韩成人av在线| 男人舔女人下部高潮全视频 | 国产麻豆精品一区二区| 久久精品ww人人做人人爽| 日本三级视频在线观看| 精品国产户外野外| 亚洲在线观看网站| 欧美人与牛zoz0性行为| 欧美激情女人20p| 中文字幕一区二区久久人妻| 99精品欧美一区二区蜜桃免费| 亚洲精品一区二区毛豆| 六月婷婷综合| 亚洲精品一区二区三区香蕉| 99热在线观看精品| 日本欧洲一区二区| 久久99国产精品| 天堂av在线电影| 欧美丰满一区二区免费视频| 手机免费看av| 国产视频一区三区| 豆国产97在线| h片在线免费| 欧美美女视频在线观看| 老熟妇一区二区| 亚洲一区黄色| 99精彩视频| 国产激情视频在线| 欧美日韩一级视频| 一区二区三区四区免费| 亚洲成人原创| 99在线观看视频| 色呦呦视频在线观看| 5858s免费视频成人| 国产午夜精品久久久久久久久| 免费亚洲视频| 久久riav| 三级在线看中文字幕完整版| 亚洲黄色www网站| 久久这里只有精品国产| 国产精品18久久久久久久网站| 亚洲综合av一区| 日本精品另类| 在线观看精品自拍私拍| 69视频免费看| 久久久久久97三级| av无码精品一区二区三区| 窝窝社区一区二区| 91高清视频免费观看| 深夜影院在线观看| 色一情一伦一子一伦一区| 3d动漫精品啪啪一区二区下载 | 黑森林精品导航| 国产亚洲色婷婷久久99精品91| 国精产品一区一区三区四川| 国产视频精品va久久久久久| 青青草免费观看视频| 久久亚洲精品小早川怜子| 无码aⅴ精品一区二区三区浪潮 | 337p日本欧洲亚洲大胆精品| 久久艹精品视频| gogo大胆日本视频一区| 美女av免费在线观看| 蜜乳av综合| 国产精品视频在线播放| av网址在线播放| 欧美变态口味重另类| 91看片在线播放| 国产日产亚洲精品系列| 伊人色在线观看| 欧美私人啪啪vps| 久久99精品久久久久久水蜜桃 | 一区在线观看| 欧美高清视频一区二区三区在线观看 | 亚洲欧美黄色片| 亚洲成人av福利| 91网站免费视频| 九九在线精品视频| 隔壁人妻偷人bd中字| 日韩精选在线| 国产欧美欧洲在线观看| 伊人222成人综合网| 日韩高清中文字幕| 91 中文字幕| 亚洲综合成人在线| 国产又粗又黄又猛| 国产成人免费视频| 成人在线看视频| 亚洲影视一区| 欧美日韩一区二区三区在线视频| 欧美成人黄色| 午夜精品久久久久久久男人的天堂| 国产69精品久久app免费版| 91精品国产福利在线观看| 国产特黄大片aaaa毛片| 中文字幕制服丝袜一区二区三区| 中文字幕免费高清视频| 六月丁香综合在线视频| 欧美亚洲日本一区二区三区| 日韩亚洲一区在线| 国产在线一区二区三区欧美| 久久国产三级| 欧美亚洲激情在线| 成人video亚洲精品| 日韩精品免费在线观看| 国产精品欧美激情在线| 色网综合在线观看| 国产一级在线播放| 中文字幕在线一区免费| 欧美老熟妇乱大交xxxxx| 国产乱码精品1区2区3区| 成人一级片网站| 国内综合精品午夜久久资源| 一区二区视频在线观看| 亚洲欧美日本伦理| 国产日韩欧美二区| 韩国三级成人在线| 国产精品影片在线观看| 无遮挡在线观看| 欧美国产极速在线| 看黄网站在线| 国产一区二区三区久久精品| 特黄视频在线观看| 日韩美女在线视频| 国产精品女人久久久| 欧美亚洲日本一区| 伊人中文字幕在线观看| 黄色成人在线免费| 久久久久久福利| 亚洲欧美成aⅴ人在线观看| 国产av自拍一区| 99re免费视频精品全部| 日本久久久久久久久久| 国产精品一区二区x88av| 成年人三级黄色片| 久久99久国产精品黄毛片色诱| 漂亮人妻被中出中文字幕| 国产亚洲欧洲| 免费看又黄又无码的网站| 欧美午夜视频| 中文字幕日韩精品无码内射| 在线中文一区| 国产在线视频在线| 亚洲东热激情| 波多野结衣综合网| 国产亚洲亚洲| 色一情一乱一伦一区二区三区日本| 亚洲一区二区动漫| 日本一极黄色片| 日韩激情中文字幕| 国产精品入口免费软件| 日韩—二三区免费观看av| 爱情岛论坛vip永久入口| 美国毛片一区二区| 色18美女社区| 国产精品夜夜嗨| 久久人妻少妇嫩草av蜜桃| 波多野结衣中文一区| 内射中出日韩无国产剧情| 第四色中文综合网| 欧美色播在线播放| 国产在线免费视频| 欧美日韩国产一区二区| 特级做a爱片免费69| 91久久精品午夜一区二区| 国产天堂第一区| 欧美精选在线播放| 亚洲高清视频网站| 亚洲精品视频二区| 久久77777| 国语自产偷拍精品视频偷 | 久久国产综合| 亚洲av综合色区| 亚洲人成久久| 亚洲高清在线免费观看| 精品一二线国产| 性猛交╳xxx乱大交| 91蜜桃在线观看| 婷婷丁香综合网| 亚洲国产精品人人做人人爽| 性无码专区无码| 欧美日韩国产另类一区| 丰满人妻一区二区三区四区53| 日韩精品中文字幕在线观看| www.亚洲.com| 久久男人av资源网站| 深夜视频一区二区| 不卡视频一区二区三区| 最新国产一区| 精品嫩模一区二区三区| 亚洲一区黄色| 欧美成人手机在线视频| 99久久久久久| 污软件在线观看| 色诱视频网站一区| 亚洲免费不卡视频| 夜夜嗨av一区二区三区免费区| 在线观看三级视频| 国产精品96久久久久久又黄又硬 | 日韩精品欧美成人高清一区二区| 久久精品视频在线观看免费| 91欧美一区二区| 久久久精品视频免费观看| 一本久久综合亚洲鲁鲁五月天| 99精品在线看| 国产亚洲欧洲在线| 91九色在线看| 91在线中文字幕| 欧洲乱码伦视频免费| 无码中文字幕色专区| 国内成人自拍视频| 国产成人精品无码免费看夜聊软件| 一区二区三区四区国产精品| 精品国产青草久久久久96| 亚洲国产精品va在线| 中文字幕在线三区| 国产原创欧美精品| 经典一区二区| 欧美性大战久久久久xxx| 国产成人高清在线| 精品一区在线观看视频| 在线不卡的av| 91这里只有精品| 青草青草久热精品视频在线网站 | 精品久久sese| 午夜激情一区| 午夜免费一级片| 国产精品家庭影院| 最新黄色网址在线观看| 亚洲男人天堂网站| 丝袜老师在线| 精品久久久久亚洲| 在线成人www免费观看视频| 欧美一区二区三区影院| 亚洲欧美一区二区三区极速播放 | 激情六月婷婷久久| 在线观看免费小视频| 亚洲欧美国产毛片在线| 日本福利片在线观看| 欧美三级电影精品| 97最新国自产拍视频在线完整在线看| 日本欧美在线视频| 亚洲精品亚洲人成在线观看| 日本欧美黄色片| av激情综合网| 精品国产乱码一区二区| 亚洲国产黄色片| av资源在线| 激情五月综合色婷婷一区二区 | 毛片在线免费视频| 亚洲国产欧美一区二区丝袜黑人| 女同一区二区免费aⅴ| 风间由美一区二区三区| 国产精品chinese| 特级特黄刘亦菲aaa级| 午夜欧美2019年伦理| 污视频在线免费| 国产91亚洲精品| 精品视频亚洲| 色噜噜狠狠永久免费| 亚洲视频 欧洲视频| 精品国自产在线观看| 国内精品视频久久| 精品国产乱码久久久久久1区2匹| 乌克兰美女av| 亚洲精品伦理在线| 高h放荡受浪受bl| 日本精品免费观看| 视频在线不卡免费观看| √天堂资源在线| 亚洲成人av资源| 成人精品一区| 亚洲综合日韩中文字幕v在线| 好看的亚洲午夜视频在线| 内射中出日韩无国产剧情| 欧美天天综合网| 天堂8中文在线| 日本高清不卡一区二区三| 美女一区二区视频| 久视频在线观看| 亚洲欧美日本另类| 中文字幕综合| 霍思燕三级露全乳照| 日本一区二区免费在线| 精品国产999久久久免费| 欧美一级电影在线| 91久久国产| 日本aaa视频| 69堂成人精品免费视频| 新版的欧美在线视频| 中日韩在线视频| 久久这里只有精品首页| 国产免费黄色录像| 日韩av免费一区| 黄色亚洲大片免费在线观看|