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

前端百題斬之我從瀏覽器控制臺看到了五種存儲方式

存儲 存儲軟件
打開瀏覽器的開發(fā)者工具中的Application部分,可以看到瀏覽器支持五種存儲方式:localStorage、sessionStorage、IndexedDB、WebSQL、Cookie。

[[408517]]

打開瀏覽器的開發(fā)者工具中的Application部分,可以看到瀏覽器支持五種存儲方式:localStorage、sessionStorage、IndexedDB、WebSQL、Cookie。其中W3C 官方在 2011 年 11 月聲明已經(jīng)不再維護(hù) Web SQL Database 規(guī)范,所以本次主要討論另外的三類四種存儲方式:Cookie、Storage、IndexedDB。

24.1 Cookie

24.1.1 定義

Cookie是一個保存在瀏覽器中的簡單的文本文件,該文件與特定的Web文檔關(guān)聯(lián)在一起,保存了該瀏覽器訪問這個Web文檔時的信息,當(dāng)瀏覽器再次訪問這個Web文檔時這些信息可供該文檔使用。(HTTP是無狀態(tài)的協(xié)議,即HTTP協(xié)議本身不對請求和響應(yīng)之間的通信狀態(tài)進(jìn)行保存,為了實現(xiàn)期望的保存狀態(tài)功能,引入了cookie技術(shù))

24.1.2 Cookie組成

在了解Cookie組成之前先了解一下Cookie的整個請求流程,這個流程分為兩類:一類是沒有Cookie信息狀態(tài)下的請求,另一類是存有Cookie狀態(tài)下的請求。

通過上面的流程圖可以看出,Cookie是在服務(wù)端生成的,經(jīng)過查詢資料了解到其是在從服務(wù)端發(fā)送的響應(yīng)報文內(nèi)的一個叫做Set-Cookie的首部字段信息,響應(yīng)報文中有該首部字段則通知客戶端保存Cookie,則Cookie的組成則跟Set-Cookie可以設(shè)置哪些值相關(guān),目前主要有以下幾類:

  1. NAME=VALUE Cookie的名稱和值,其中NAME是唯一標(biāo)識cookie的名稱,不區(qū)分大小寫;VALUE是存儲在Cookie里的字符串值,該值必須經(jīng)過URL編碼。
  2. Domain=域名 Cookie有效的域,發(fā)送到這個域的所有請求都會包含對應(yīng)的Cookie。(若不指定則默認(rèn)為創(chuàng)建Cookie的服務(wù)器的域名)
  3. Path=PATH 請求URL中包含這個路徑才會把Cookie發(fā)送到服務(wù)器(若不指定則默認(rèn)為文檔所在的文件目錄)
  4. Expires=DATE Cookie的有效期,默認(rèn)情況下,瀏覽器會話結(jié)束后會刪除所有cookie。
  5. Secure 設(shè)置后僅在HTTPS安全通信時才會發(fā)送Cookie
  6. HttpOnly 設(shè)置后只能在服務(wù)器上讀取,不能再通過JavaScript讀取Cookie
  1. const express = require('express'); 
  2.  
  3. const app = express(); 
  4.  
  5. app.get('/', (req, res) => { 
  6.     res.cookie('myCookie''myCookie', { 
  7.         expires: new Date(Date.now() + 900000), 
  8.         secure: true
  9.         httpOnly: true 
  10.     }); 
  11.     res.send('get請求已經(jīng)被處理'); 
  12. }) 
  13. app.listen(8090, () => { 
  14.     console.log('8090端口已經(jīng)啟動!!!'); 
  15. }); 

通過請求 http://127/.0.0.1:8090 來看看其結(jié)果:

第一次返回的Cookie結(jié)果

后續(xù)請求所帶的Cookie信息

24.1.3 Cookie特點

  1. 每個Cookie不超過4096字節(jié);
  2. 每個域中Cookie個數(shù)有限制,就拿最新版來說:IE和Edge不超過50個;Firefox不超過150個;Opera不超過180個;Safari和Chrome沒有限制;
  3. Cookie超過單個域的上限,瀏覽器會刪除之前設(shè)置的Cookie;
  4. 創(chuàng)建的Cookie超過最大限制,該Cookie會被靜默刪除;
  5. 可設(shè)置失效時間,沒有設(shè)置則會話結(jié)束會刪除Cookie;
  6. 每個請求均會攜帶Cookie,若Cookie過多會帶來性能問題;
  7. 受同源策略限制

24.1.4 Cookie的操作

Cookie存儲到瀏覽器端之后仍然可以對其進(jìn)行讀、寫、刪除,由于js對Cookie操作的支持并不是很友好,所以需要進(jìn)行一些簡單的封裝。

  1. class CookieUtil { 
  2.     // 獲取Cookie中的對應(yīng)屬性 
  3.     static get(name) { 
  4.         const cookies = document.cookie; 
  5.         const cookiesArr = cookies.split(';'); 
  6.         for (let index = 0; index < cookiesArr.length; index++) { 
  7.             const presentCookieArr = cookiesArr[index].split('='); 
  8.             if (presentCookieArr[0] === name) { 
  9.                 return presentCookieArr[1]; 
  10.             } 
  11.         } 
  12.  
  13.         return null
  14.     } 
  15.  
  16.     // 設(shè)置對應(yīng)的Cookie值 
  17.     static set(name, value, expires, path, domain, secure) { 
  18.         let cookieText = `${name}=${value}`; 
  19.         if (expires instanceof Date) { 
  20.             cookieText += `; expire=${expires.toGMTString()}`; 
  21.         } 
  22.         if (path) { 
  23.             cookieText += `; path=${path}`; 
  24.         } 
  25.         if (domain) { 
  26.             cookieText += `; domain=${domain}`; 
  27.         } 
  28.         if (secure) { 
  29.             cookieText += `; secure`; 
  30.         } 
  31.         document.cookie = cookieText; 
  32.     } 
  33.  
  34.     // 刪除對應(yīng)的Cookie 
  35.     static deleteCookie(name) { 
  36.         CookieUtil.set(name'', new Date(0)); 
  37.     } 

24.2 Web Storage

Web Storage的目的是解決通過客戶端存儲不需要頻繁發(fā)送回服務(wù)器的數(shù)據(jù)時使用cookie的問題,其提供了cookie之外的存儲會話數(shù)據(jù)的途徑和跨會話持久化存儲大量數(shù)據(jù)的機(jī)制,其主要有兩個對象:localStorage和sessionStorage,localStorage是永久存儲機(jī)制,sessionStorage是跨會話的存儲機(jī)制。

24.2.1 sessionStorage

sessionStorage是跨會話的存儲機(jī)制,具有以下特點:

  1. sessionStorage對象值存儲會話數(shù)據(jù),其生命周期會存儲到瀏覽器關(guān)閉。(在該過程中刷新頁面其數(shù)據(jù)不受影響)
  2. 瀏覽器在實現(xiàn)存儲寫入時使用同步阻塞方式,數(shù)據(jù)會被立即提交到存儲。
  3. 獨立打開同一個窗口同一個頁面或一個Tab,sessionStorage也是不一樣的。
  4. 存儲空間大小限制為每個源不超過5M。
  1. // 使用方法存儲數(shù)據(jù) 
  2. sessionStorage.setItem('sessionName1''value1'); 
  3. // 使用屬性存儲數(shù)據(jù) 
  4. sessionStorage.sessionName2 = 'value2'
  5.  
  6. // 使用方法取得數(shù)據(jù) 
  7. const sessionValue1 = sessionStorage.getItem('sessionName1'); 
  8. console.log('sessionValue1的值為:', sessionValue1); 
  9. // 使用屬性取得數(shù)據(jù) 
  10. const sessionValue2 = sessionStorage.sessionName2; 
  11. console.log('sessionValue2的值為:', sessionValue2); 
  12.  
  13. // 循環(huán)遍歷sessionStarage 
  14. for (let index = 0; index < sessionStorage.length; index++) { 
  15.     // 使用key()方法獲得指定索引處的名稱 
  16.     const key = sessionStorage.key(index); 
  17.     const value = sessionStorage.getItem(key); 
  18.     console.log('循環(huán)遍歷結(jié)果:'key, value); 
  19.  
  20. // 使用方法刪除值 
  21. sessionStorage.removeItem('sessionName1'); 
  22. // 使用delete刪除值 
  23. delete sessionStorage.sessionName2; 
  24.  
  25. // 使用clear()方法清空sessionStorage 
  26. sessionStorage.clear(); 

24.2.2 localStorage

localStorage是永久存儲機(jī)制,具有以下特點:

  1. 生命周期是永久的,除非被清除,否則永久保存。
  2. 存儲空間大小限制為每個源不超過5M。
  3. 受同源策略限制。
  4. 瀏覽器存儲時采用同步存儲方式。
  1. // 使用方法存儲數(shù)據(jù) 
  2. localStorage.setItem('localName1''value1'); 
  3. // 使用屬性存儲數(shù)據(jù) 
  4. localStorage.localName2 = 'value2'
  5.  
  6. // 使用方法取得數(shù)據(jù) 
  7. const localValue1 = localStorage.getItem('localName1'); 
  8. console.log('localValue1的值為:', localValue1); 
  9. // 使用屬性取得數(shù)據(jù) 
  10. const localValue2 = localStorage.localName2; 
  11. console.log('localValue2的值為:', localValue2); 
  12.  
  13. // 循環(huán)遍歷localStarage 
  14. for (let index = 0; index < localStorage.length; index++) { 
  15.     // 使用key()方法獲得指定索引處的名稱 
  16.     const key = localStorage.key(index); 
  17.     const value = localStorage.getItem(key); 
  18.     console.log('循環(huán)遍歷結(jié)果:'key, value); 
  19.  
  20. // 使用方法刪除值 
  21. localStorage.removeItem('localName1'); 
  22. // 使用delete刪除值 
  23. delete localStorage.localName2; 
  24.  
  25. // 使用clear()方法清空localStorage 
  26. localStorage.clear(); 

24.3 IndexedDB

24.3.1 IndexedDB整個結(jié)構(gòu)

對于整個IndexedDB為上述圖中所示:

一個域名下可以包含多個數(shù)據(jù)庫;

一個數(shù)據(jù)庫中包含多個對象倉庫,就類似與Mysql一個庫中有多張表一樣。

每個對象倉庫中包含多條數(shù)據(jù)記錄。

24.3.2 主要特點

IndexedDB是瀏覽器中存儲結(jié)構(gòu)化數(shù)據(jù)的一個方案,其設(shè)計幾乎是完全異步的,主要有以下特點:

  1. 鍵值對存儲 在對象倉庫中,數(shù)據(jù)以“鍵值對”形式保存,每個數(shù)據(jù)記錄都有獨一無二的主鍵。
  2. 異步 IndexedDB操作時不會鎖死瀏覽器,用戶依然可以進(jìn)行其它操作。
  3. 支持事務(wù) 一些列操作步驟之中只要有一步失敗,整個事務(wù)就都取消,數(shù)據(jù)庫回滾到事務(wù)發(fā)生之前的狀態(tài),不存在只改寫一部分?jǐn)?shù)據(jù)的情況。
  4. 受同源策略限制 只能訪問自身域名下的數(shù)據(jù)庫,不能跨域訪問數(shù)據(jù)庫。
  5. 存儲空間大 每個源都有存儲空間的限制,而且這個限制跟瀏覽器有關(guān),例如Firefox限制每個源50MB,Chrome為5MB。
  6. 支持二進(jìn)制存儲 不僅可以存儲字符串,還可以存儲二進(jìn)制數(shù)據(jù)(ArrayBuffer和Blob)

24.3.3 數(shù)據(jù)庫操作

IndexedDB像很多其它數(shù)據(jù)庫一樣有很多操作,下面就通過實戰(zhàn)的方式一起了解這些操作。

24.3.3.1 初始化數(shù)據(jù)庫

第一步是初始化數(shù)據(jù)庫,傳入創(chuàng)建的數(shù)據(jù)庫名和版本,獲取對應(yīng)的數(shù)據(jù)庫操作實例。

  1. class IndexedDBOperation { 
  2.   constructor(databaseName, version) { 
  3.       this.atabaseName = databaseName; 
  4.       this.version = version; 
  5.       this.request = null
  6.       this.db = null
  7.   } 
  8.  
  9.   // 數(shù)據(jù)庫初始化操作 
  10.   init() { 
  11.       this.request = window.indexedDB.open(this.databaseName, this.version); 
  12.       return new Promise((resolve, reject) => { 
  13.           this.request.onsuccess = event => { 
  14.               this.db = event.target.result; 
  15.               console.log('數(shù)據(jù)庫打開成功'); 
  16.               resolve('success'); 
  17.           }; 
  18.           this.request.onerror = event => { 
  19.               console.log('數(shù)據(jù)庫打開報錯'); 
  20.               reject('error'); 
  21.           }; 
  22.           this.request.onupgradeneeded = event =>{ 
  23.               this.db = event.target.result; 
  24.               console.log('數(shù)據(jù)庫升級'); 
  25.               resolve('upgradeneeded'); 
  26.           }; 
  27.       }); 
  28.   } 

24.3.3.2 對象倉庫操作

數(shù)據(jù)是在對象倉庫中存儲的,創(chuàng)建好數(shù)據(jù)庫后則需要創(chuàng)建所需的數(shù)據(jù)倉庫

  1. class IndexedDBOperation { 
  2.   // …… 
  3.   // 創(chuàng)建數(shù)據(jù)倉庫 
  4.   createObjectStore(objectStoreName, options) { 
  5.       let objectStore = null
  6.       if (!this.db.objectStoreNames.contains(objectStoreName)) { 
  7.           objectStore = this.db.createObjectStore(objectStoreName, options); 
  8.       } 
  9.       return objectStore; 
  10.   } 

24.3.3.3 數(shù)據(jù)操作

不管是關(guān)系型數(shù)據(jù)庫還是非關(guān)系型數(shù)據(jù)庫,CURD肯定是必不可少的,誰讓我們是“CURD工程師”呢!!!

  1. class IndexedDBOperation { 
  2.   // …… 
  3.   // 新增內(nèi)容 
  4.   add(objectStore, content) { 
  5.       objectStore.add(content); 
  6.   } 
  7.    
  8.   // 獲取內(nèi)容 
  9.   get(objectStore, id) { 
  10.       const request = objectStore.get(id); 
  11.       return new Promise((resolve, reject) => { 
  12.           request.onsuccess = resolve; 
  13.           request.onerror = reject; 
  14.       }); 
  15.   } 
  16.    
  17.   // 更新內(nèi)容 
  18.   update(objectStore, content) { 
  19.       const request = objectStore.put(content); 
  20.       request.onsuccess = event => { 
  21.           console.log('更新成功'); 
  22.       }; 
  23.       request.onerror = event => { 
  24.           console.log('更新失敗'); 
  25.       }; 
  26.   } 
  27.    
  28.   // 刪除內(nèi)容 
  29.   remove(objectStore, deleteId) { 
  30.       const request = objectStore.delete(deleteId); 
  31.       request.onsuccess = event => { 
  32.           console.log('刪除成功'); 
  33.       }; 
  34.       request.onerror = event => { 
  35.           console.log('刪除失敗'); 
  36.       }; 
  37.   } 

24.3.3.5 調(diào)用代碼

上面寫了一個數(shù)據(jù)庫的類,但是仍然不知道怎么調(diào)用呀,下面就用一個demo講述其調(diào)用。

  1. class IndexedDBOperation { 
  2.   // …… 
  3.   // 打印全部數(shù)據(jù) 
  4.   printAllDataByCursor(objectStore) { 
  5.       const cursorRequest = objectStore.openCursor(); 
  6.       cursorRequest.onsuccess = event => { 
  7.           const cursor = event.target.result; 
  8.           if (cursor) { 
  9.               console.log(`利用游標(biāo)打印的內(nèi)容,id為${cursor.key}, 值為${cursor.value}`); 
  10.               // 移動到下一條記錄 
  11.               cursor.continue(); 
  12.           } 
  13.       }; 
  14.   } 

本文轉(zhuǎn)載自微信公眾號「執(zhí)鳶者」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系執(zhí)鳶者公眾號。

 

責(zé)任編輯:武曉燕 來源: 執(zhí)鳶者
相關(guān)推薦

2021-07-19 07:02:10

瀏覽器進(jìn)程單進(jìn)程瀏覽器

2021-07-14 07:00:53

瀏覽器技巧前端

2021-07-08 07:01:53

瀏覽器安全前端

2021-11-03 06:57:41

瀏覽器Jsonp安全

2021-07-26 05:01:55

瀏覽器渲染流程

2021-05-12 07:04:55

Js變量方式

2013-07-15 10:25:27

2013-08-16 10:12:57

C編程風(fēng)格

2021-10-19 22:23:05

typeof方式Instanceof

2021-05-09 22:00:59

TypeofInstanceof運算符

2017-06-15 08:52:36

數(shù)據(jù)分析可視化軟件開發(fā)

2021-05-19 07:02:42

JS對象方法

2020-09-20 17:50:38

編程語言PythonJava

2021-07-26 06:57:58

重繪回流前端

2021-12-03 06:59:23

操作符驗證點屬性

2022-12-26 00:00:02

數(shù)據(jù)驅(qū)動業(yè)務(wù)

2013-11-15 13:22:22

瀏覽器JavaScript

2021-06-28 07:12:28

賦值淺拷貝深拷貝

2021-06-28 13:20:15

谷歌AI芯片

2021-06-16 07:03:37

New操作符函數(shù)
點贊
收藏

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

成人高清网站| 黄色污污网站在线观看| 亚洲不卡在线| 亚洲 欧美综合在线网络| 鲁鲁视频www一区二区| 丰满熟女人妻一区二区三| 久久久久久美女精品| 精品国产一区久久| 农村妇女精品一二区| 免费网站免费进入在线| 成人av资源在线观看| 国产成人一区二区| 亚洲色图综合区| 亚洲精品蜜桃乱晃| 欧美一区二区三区播放老司机| 青青青青草视频| 日本三级视频在线播放| caoporm超碰国产精品| 成人h视频在线| 国产午夜激情视频| 99久久精品网站| 亚洲欧美在线免费| 26uuu国产| 日韩欧美2区| 精品久久久精品| 亚洲图片都市激情| 色综合久久网女同蕾丝边| 加勒比av一区二区| 日韩av男人的天堂| 久久这里只有精品国产| 99热国内精品| 国产一区二区精品丝袜| 污片免费在线观看| 一区二区视频| 欧美日本乱大交xxxxx| 精品视频一区二区在线| 懂色av一区| 国产精品免费免费| 日韩亚洲不卡在线| 欧美人体大胆444www| 成人免费看黄yyy456| 成人黄色免费看| 中文字幕一区二区三区免费看| 国产亚洲激情| 国模精品一区二区三区色天香| 欧美日韩黄色网| 91欧美国产| 色婷婷综合久久久久| 日韩女同一区二区三区| 伊人久久大香线蕉综合网蜜芽| 精品国产91亚洲一区二区三区婷婷| 午夜免费福利网站| 在线观看欧美| 欧美巨大另类极品videosbest| jizz欧美激情18| 亚洲成人激情社区| 欧美综合视频在线观看| 欧美极品欧美精品欧美图片| 中文字幕人成乱码在线观看| 欧美日韩视频在线| 国产无套内射久久久国产| 狠狠操一区二区三区| 午夜精品久久久久久久99水蜜桃 | 91av在线精品| 国产午夜免费福利 | 中日韩av在线播放| 激情久久99| 69堂亚洲精品首页| 成人啪啪18免费游戏链接| 午夜日韩影院| 亚洲激情视频网| 成人午夜福利一区二区| 成人久久久久| 欧美精品在线免费播放| 国产精品19乱码一区二区三区| 亚洲美女啪啪| 国产精品91久久| 亚洲天堂免费av| 国内精品久久久久影院薰衣草| 成人激情电影一区二区| 国产叼嘿视频在线观看| 不卡一区二区三区四区| 欧美性大战久久久久| www.av在线播放| 国产欧美精品一区| 日本xxxxx18| 色是在线视频| 欧美高清激情brazzers| 日本精品一二三区| 精品国产一区二区三区久久久樱花 | av中文字幕在线观看| 亚洲成va人在线观看| 91看片就是不一样| 国产精品igao视频网网址不卡日韩| 日韩欧美一区二区视频| 久久精品无码一区| 欧美日本亚洲韩国国产| 国产97色在线| 99热这里只有精品5| 91一区二区在线| 做爰高潮hd色即是空| 69av成人| 91精品欧美一区二区三区综合在 | 国产欧美日韩一区二区三区四区| 日韩小视频网址| 五月婷婷视频在线| 国产一区二区免费视频| 欧美日韩三区四区| 久久大胆人体| 欧美日韩dvd在线观看| 中文字幕人妻一区二区三区| 日韩在线视频精品| 日本视频久久久| 精品人妻无码一区二区色欲产成人| 91老师片黄在线观看| 99久久99久久精品| 国产国产一区| 亚洲精品理论电影| 五月婷婷一区二区| 蜜桃传媒麻豆第一区在线观看| 国产精品久久久久免费| 免费不卡视频| 欧美在线免费播放| 国产黑丝一区二区| 欧美另类专区| 91欧美激情另类亚洲| 成人在线观看免费| 欧美视频不卡中文| 精品国产一区在线| 欧美日韩综合| 91老司机在线| 91电影在线播放| 91成人免费在线| 国产精品1000部啪视频| 亚洲黄网站黄| 国产伦精品一区二区三区视频黑人| 黄色网页在线免费观看| 欧美午夜片在线看| 少妇精品无码一区二区免费视频| 男女av一区三区二区色多| 精品福利影视| 国产理论在线| 日韩成人在线播放| 日韩欧美一区二区一幕| 成年人国产精品| 欧美成人免费在线观看视频| 动漫3d精品一区二区三区乱码| 久久国产精品久久国产精品| 国产精品久久久久久久免费 | 国产99一区视频免费 | 99精品国产在热久久| 国产精品视频在线免费观看| 肉肉视频在线观看| 日韩欧美成人午夜| 欧美精品一区二区成人| 国产精品123| 精品少妇人欧美激情在线观看| 深夜福利一区| 国外成人在线视频| 五月婷婷六月色| 日韩欧美国产一区二区| 国产成人无码精品久久二区三| 美女日韩在线中文字幕| 日本一区美女| 欧洲亚洲精品久久久久| 久久韩国免费视频| 亚洲av无码国产精品永久一区| 一区二区三区成人在线视频| 人妻 丝袜美腿 中文字幕| 亚洲区欧美区| 欧美一二三区| 国产情侣一区二区三区| 九九精品视频在线| 天堂av中文字幕| 一本久道中文字幕精品亚洲嫩| 精品无码人妻一区二区免费蜜桃 | 国产精品亚洲精品| bestiality新另类大全| 亚洲国产精品va| 天天综合久久综合| 亚洲黄色av一区| 少妇户外露出[11p]| 久久综合图片| 在线视频91| 福利在线一区| 国产精品旅馆在线| 人人超在线公开视频| 亚洲美女性视频| 一卡二卡三卡在线| 午夜一区二区三区视频| 波多野结衣家庭教师在线观看| 国产精品一二三在| 国产 福利 在线| 亚洲激情五月| 免费精品视频一区二区三区| 精品91福利视频| 日本精品一区二区三区在线播放视频 | 日韩在线免费高清视频| 日本精品久久久久| 精品污污网站免费看| 日韩 欧美 精品| 中文字幕欧美国产| 国产精品一级黄片| 狠狠色丁香婷婷综合久久片| 播放灌醉水嫩大学生国内精品| 国产精品x453.com| 欧美日本韩国国产| 一区二区三区视频免费视频观看网站 | 国产69精品久久99不卡| 黄色成人免费看| 亚洲激情不卡| 福利在线小视频| 日韩精品久久| 欧美日韩一区二区视频在线| 亚洲高清在线一区| 国产日韩欧美在线观看| 综合久久2023| 欧美精品久久久久久久久久| 3p视频在线观看| 亚洲欧美中文另类| 天堂在线资源8| 日韩欧美国产1| 一区二区三区黄| 在线视频一区二区免费| 日韩欧美三级视频| 一级精品视频在线观看宜春院| 国产18无套直看片| 久久久久99精品一区| 久久久久麻豆v国产精华液好用吗 在线观看国产免费视频 | 久久久久一区二区三区四区| 国内精品免费视频| 国产精品资源站在线| 日本黄色福利视频| 日韩国产欧美在线视频| 国产精品97在线| 制服诱惑一区二区| 丁香花在线影院观看在线播放 | 久久91亚洲精品中文字幕奶水| 99视频在线观看地址| 国产一区二区动漫| www.黄在线观看| 色吧影院999| 天堂地址在线www| 日韩在线视频国产| 欧美极品视频| 日韩在线免费av| 国产写真视频在线观看| 久久精品国产视频| 日本中文在线| 久久视频免费观看| 在线免费观看a视频| 欧美精品在线视频观看| 亚洲www色| 欧美极品少妇xxxxⅹ免费视频| 免费在线观看的电影网站| 欧美精品一本久久男人的天堂| 丝袜美女在线观看| 欧美大成色www永久网站婷| 中文在线手机av| 欧美高清一级大片| av资源在线看片| 2021久久精品国产99国产精品| 精精国产xxxx视频在线播放| 国产91精品青草社区| 依依综合在线| 国产精品一区二区三区免费视频| 在线高清欧美| 国产精品入口免费| 国产日韩视频在线| 亚洲小说欧美另类激情| 欧美影院一区| av7777777| 男男成人高潮片免费网站| 亚洲欧美日韩精品一区| 国产成人午夜精品5599| 成人手机在线免费视频| 欧美—级在线免费片| 久久久久久久久久网站| 性久久久久久久久久久久| 精品黑人一区二区三区| 欧美一区二区三区在线视频| 国产 日韩 欧美 综合| 亚洲精品一二区| 麻豆系列在线观看| 久久久中文字幕| 亚洲四虎影院| 成人av影视在线| 欧美码中文字幕在线| 国产小视频免费| 日韩av二区在线播放| 一区二区三区人妻| 久久久亚洲综合| www色aa色aawww| 狠狠久久五月精品中文字幕| 亚洲影视一区二区| 亚洲精品美女视频| av观看在线| 国产999精品| av日韩精品| 超碰成人在线免费观看| 欧美一区=区| 人妻巨大乳一二三区| 国产三级精品三级在线专区| 久久久香蕉视频| 欧美男女性生活在线直播观看| 丰满人妻妇伦又伦精品国产| 最近2019年好看中文字幕视频| 99re6在线精品视频免费播放| 国产欧美精品一区二区三区-老狼 国产欧美精品一区二区三区介绍 国产欧美精品一区二区 | 污污网站在线免费观看| 中文字幕亚洲在线| 涩涩涩在线视频| 91九色偷拍| 久久国产影院| 日韩中文字幕二区| 成人毛片视频在线观看| 老司机深夜福利网站| 色综合中文字幕国产| 黄色av小说在线观看| 久热精品视频在线| 久久天天久久| 日韩和欧美的一区二区| 一区二区三区国产盗摄| 韩国一区二区三区四区| 综合欧美一区二区三区| 中文字幕第99页| 亚洲欧美日韩中文在线| 成年人在线网站| 国产精品二区在线| 欧美69视频| 亚洲精品在线网址| 中文字幕中文乱码欧美一区二区 | a级片在线观看免费| 欧美久久久久久久久久| 韩国三级av在线免费观看| 欧美亚洲免费电影| 日韩大胆成人| 欧美午夜精品一区二区蜜桃| 国产夫妻自拍av| 精品国内自产拍在线观看| 国产精品第一| 亚洲福利av在线| 免费的国产精品| 在线观看亚洲大片短视频| 91福利小视频| 成人全视频高清免费观看| 国产精品高精视频免费| 欧美综合在线视频观看| 男人的天堂日韩| 国产精品欧美一区喷水| 一级片在线观看视频| 久久精品99久久久香蕉| 91精品麻豆| 300部国产真实乱| 国产69精品久久777的优势| 日韩aaaaaa| 亚洲欧洲在线免费| av免费在线一区| 在线看视频不卡| 韩国av一区二区三区| 青青草手机在线视频| 亚洲国产福利在线| 日韩欧美看国产| 亚洲精品一品区二品区三品区 | 男人添女人荫蒂国产| 亚洲一区二区三区美女| 亚洲人成色777777精品音频| 91成人在线视频| 美女毛片一区二区三区四区最新中文字幕亚洲 | 免费日韩视频| 奇米网一区二区| 日韩欧美久久久| 香蕉伊大人中文在线观看| 欧美重口乱码一区二区| 麻豆精品视频在线观看| 精品视频在线观看免费| 日韩电影中文字幕av| 日韩一区精品| 妞干网视频在线观看| 91日韩在线专区| 国产精品国产三级国产普通话对白| 欧美日韩高清区| 久久99国内| 999久久久精品视频| 一区二区三区精品在线| 日韩大胆人体| 国产日产欧美精品| 在线欧美视频| 日本女人性生活视频| 亚洲白拍色综合图区| 成人在线观看免费播放| 日韩成人三级视频| 国产欧美一区二区精品婷婷| 99热这里只有精品99| 欧美孕妇孕交黑巨大网站| 66久久国产| 国产精品毛片一区二区| 日韩欧美一区电影| www.久久.com| 人妻久久久一区二区三区|