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

前端存儲除了 localStorage 還有啥?

開發 前端
前端的數據存儲方式,你除了用過 Cookies、localStorage 和 sessionStorage 外,還有用過其它的存儲方式么?其實除了前面提到的 3 種存儲方式,目前主流的瀏覽器還支持 Web SQL 和 IndexedDB。

 前端存儲除了 localStorage 還有啥?

前言

前端的數據存儲方式,你除了用過 Cookies、localStorage 和 sessionStorage 外,還有用過其它的存儲方式么?其實除了前面提到的 3 種存儲方式,目前主流的瀏覽器還支持 Web SQL 和 IndexedDB。

目前市場上主流的瀏覽器有 Chrome 、Safari、Firefox、Opera、UC Browser 和 Internet Explorer 等,其中截止 2020 年 5 月,Chrome 的市場占有率為 「63.93%」,遠遠超過第二名 Safari 瀏覽(「18.19%」)。

 

前端存儲除了 localStorage 還有啥?

 

這里我們以市場占有率第一的 Chrome 瀏覽器為例,來了解一下它支持的所有存儲方案:

 

前端存儲除了 localStorage 還有啥?

 

(打開 Chrome 開發者工具,切換至 Application 欄位)

在介紹目前比較流行的一些開源的前端存儲方案之前,阿寶哥先分享一些與存儲有關,有趣好玩的開源庫。

一、有趣好玩的開源庫

1.1 Sharedb

 

  1. ❝ 
  2.  
  3. Realtime database backend based on Operational Transformation (OT)。 
  4.  
  5. https://github.com/share/sharedb 
  6.  
  7. ❞ 

 

ShareDB 是一個基于 JSON 文檔操作轉換(OT)的實時數據庫后端。它是 DerbyJS Web 應用程序框架的實時后端。

「示例1:實時數據同步」

 

前端存儲除了 localStorage 還有啥?

 

「示例2:展示實時查詢的排行榜應用程序」

 

前端存儲除了 localStorage 還有啥?

 

1.2 ImmortalDB

 

  1. ❝ 
  2.  
  3. A relentless key-value store for the browser。 
  4.  
  5. https://github.com/gruns/ImmortalDB 
  6.  
  7. ❞ 

 

ImmortalDB 是在瀏覽器中存儲持久鍵值數據的最佳方法。保存到 ImmortalDB 的數據被冗余地存儲在 Cookies,IndexedDB 和 localStorage 中,并且如果其中的任何數據被刪除或損壞,它們將不斷進行自我修復。

例如,清除 Cookie 是一種常見的用戶操作,即使對于非技術用戶也是如此。在存儲壓力下,瀏覽器在沒有警告的情況下隨意刪除 IndexedDB、localStorage 或 sessionStorage。

「示例」

 

  1. import { ImmortalDB } from 'immortal-db' 
  2.  
  3. await ImmortalDB.set('name''semlinker'); // Set 
  4. await ImmortalDB.get('name'default='lolo'); // Get 
  5. await ImmortalDB.remove('name'); // Remove  

1.3 web-storage-cache

對 localStorage 和 sessionStorage 進行了擴展,添加了超時時間,序列化方法。

https://github.com/wuchangming/web-storage-cache

WebStorageCache 對 HTML5 localStorage 和 sessionStorage 進行了擴展,「添加了超時時間,序列化方法」。可以直接存儲 JSON 對象,同時可以非常簡單的進行超時時間的設置。

優化:WebStorageCache 自動清除訪問的過期數據,避免了過期數據的累積。另外也提供了清除全部過期數據的方法:wsCache.deleteAllExpires();

「示例」

 

  1. var wsCache = new WebStorageCache(); 
  2.  
  3. // 緩存字符串'wqteam' 到 'username' 中, 超時時間100秒 
  4. wsCache.set('username''wqteam', {exp : 100}); 
  5.  
  6. // 超時截止日期,可用使用Date類型 
  7. var nextYear = new Date(); 
  8. nextYear.setFullYear(nextYear.getFullYear() + 1); 
  9. wsCache.set('username''wqteam', {exp : nextYear}); 
  10.  
  11. // 獲取緩存中 'username' 的值 
  12. wsCache.get('username'); 
  13.  
  14. // 緩存簡單js對象,默認使用序列化方法為JSON.stringify。 
  15. // 可以通過初始化wsCache的時候配置serializer.serialize 
  16. wsCache.set('user', { name'Wu', organization: 'wqteam'}); 

1.4 lz-string

LZ-based compression algorithm for JavaScript。

https://github.com/pieroxy/lz-string/

lz-string 旨在滿足在 localStorage 中(尤其是在移動設備上)存儲大量數據的需求。localStorage 通常限制為 5MB ~10MB,你可以通過對數據進行壓縮,以存儲更多的數據。

「示例」

 

  1. var string = "Hello, my name is semlinker"
  2. console.log("Size of sample is: " + string.length); 
  3.  
  4. var compressed = LZString.compress(string); 
  5. console.log("Size of compressed sample is: " + compressed.length); 
  6.  
  7. string = LZString.decompress(compressed); 
  8. console.log("Sample is: " + string); 

下圖是使用官方在線示例進行字符串壓縮測試的結果:

 

前端存儲除了 localStorage 還有啥?

 

(圖片來源:https://pieroxy.net/blog/pages/lz-string/demo.html)

接下來我們開始來介紹一些主流的數據庫。

二、主流的數據庫

2.1 localForage

Offline storage, improved. Wraps IndexedDB, WebSQL, or localStorage using a simple but powerful API.

https://github.com/localForage/localForage

localForage 是一個快速簡單的 JavaScript 存儲庫。它通過使用類似于 localStorage 的簡單 API 來使用異步存儲(IndexedDB 或 WebSQL)),進而改善你的 Web 應用程序的離線體驗。

對于不支持 IndexedDB 或 WebSQL 的瀏覽器,localForage 會使用 localStorage 進行數據存儲。此外,localForage 還支持存儲所有可以序列化為 JSON 的原生 JS 對象以及 ArrayBuffers,Blob 和 TypedArrays。

localForage 主要支持的平臺:

  • IE 10(IE 8+ 使用 localStorage)
  • Opera 15(Opera 10.5+ 使用 localStorage)
  • Firefox 18
  • Safari 3.1(包括 Mobile Safari)
  • Chrome 23、Chrome for Android 32
  • Phonegap/Apache Cordova 1.2.0

2.2 PouchDB

- PouchDB is a pocket-sized database.

https://github.com/pouchdb/pouchdb

PouchDB 是一個瀏覽器內數據庫,允許應用程序在本地保存數據,以便用戶即使在離線時也可以享受應用程序的所有功能。另外,數據在客戶端之間是同步的,因此用戶可以隨時隨地保持最新狀態。

PouchDB 也在 Node.js 中運行,可以用作與 「CouchDB」 兼容的服務器的直接接口。該 API 在每個環境中工作都是相同的,因此你可以花更少的時間來擔心瀏覽器的差異,而花更多的時間來編寫干凈、一致的代碼。

PouchDB 支持所有現代瀏覽器:

  • Firefox 29+ (Including Firefox OS and Firefox for Android)
  • Chrome 30+
  • Safari 5+
  • Internet Explorer 10+
  • Opera 21+
  • Android 4.0+
  • iOS 7.1+
  • Windows Phone 8+

PouchDB 在幕后使用 IndexedDB,若當前環境不支持 IndexedDB 則回退到 Web SQL。

2.3 Rxdb

A realtime Database for JavaScript Applications.

https://github.com/pubkey/rxdb

RxDB(Reactive Database 的縮寫)是 NoSQL 數據庫,用于 JavaScript 應用程序,如網站,混合應用程序,Electron Apps,Progressive Web Apps 和 Node.js。響應式意味著你不僅可以查詢當前狀態,還可以訂閱所有狀態更改,比如查詢的結果或文檔的單個字段。

 

前端存儲除了 localStorage 還有啥?

 

這對于基于 UI 的實時應用程序非常有用,因為它易于開發,并且具有很大的性能優勢。為了在客戶端和服務器之間復制數據,RxDB 提供了用于與任何 CouchDB 兼容端點以及自定義 GraphQL 端點進行實時復制的模塊。

RxDB 支持以下特性:

  • Mango-Query:支持 mquery API 從集合中獲取數據,支持鏈式的 mongoDB 查詢風格。
  • Replication:因為 RxDB 依賴于 PouchDB,因此很容易實現終端設備與服務器之間的數據同步。
  • Reactive:RxDB 使得同步 DOM 的狀態變得很簡單。
  • MultiWindow/Tab:當 RxDB 的兩個實例使用相同的存儲引擎,它們的狀態和操作流將會被廣播。這意味著對于兩個瀏覽器窗口,窗口 #1 的數據變化也會自動影響窗口 #2 的數據狀態。
  • Schema:通過 jsonschema 來定義 Schemas,它們用來描述數據格式。
  • Encryption:通過將模式字段設置為encrypted,該字段的值將以加密模式存儲,沒有密碼就無法讀取。

2.4 NeDB

The JavaScript Database, for Node.js, nw.js, electron and the browser.

https://github.com/louischatriot/nedb

NeDB 是一個 JavaScript 數據庫,能夠運行在 Node.js、nw.js、Electron 和瀏覽器環境。它是使用純的 JavaScript 實現,不依賴其它庫,提供的 API 是 MongoDB API 的子集,重要的是它的速度非常快:

  • 插入:10,680 ops/s
  • 查找:43,290 ops/s
  • 更新:8,000 ops/s。
  • 刪除:11,750 ops/s。

ops (operation per second) 即表示每秒操作的次數。

2.5 Dexie.js

A Minimalistic Wrapper for IndexedDB.

https://github.com/dfahlander/Dexie.js

Dexie.js 是 IndexedDB 的包裝庫,它提供了一套經過精心設計的 API,強大的錯誤處理,較強的可擴展性,此外它能夠跟蹤數據變化,支持 KeyRange (搜索不區分大小寫,可設置匹方式和 OR 操作)。

Dexie.js 主要為了解決原生 IndexedDB API 中存在的三個主要問題:

  • 異常錯誤處理。
  • 較弱的查詢功能。
  • 代碼復雜性。

為了便于開發者接入 Dexie.js,在 Dexie.js 官網中提供了豐富的示例:

  • React + Dexie
  • React + Redux + Dexie
  • Dexie with Typescript
  • Angular + Dexie
  • Dexie with Electron
  • Full Text Search

以上只列出部分示例,了解更多示例請訪問:Dexie.js - Samples(

https://dexie.org/docs/Samples)。最后我們來簡單介紹一下各種 Web 存儲方案。

三、各種 Web 存儲方案簡介

3.1 Cookie

HTTP Cookie(也叫 Web Cookie 或瀏覽器 Cookie)是服務器發送到用戶瀏覽器并保存在本地的一小塊數據,它會在瀏覽器下次向同一服務器再發起請求時被攜帶并發送到服務器上。通常,它用于告知服務端兩個請求是否來自同一瀏覽器,如保持用戶的登錄狀態。

Cookie 主要用于以下三個方面:

  • 會話狀態管理(如用戶登錄狀態、購物車、游戲分數或其它需要記錄的信息);
  • 個性化設置(如用戶自定義設置、主題等);
  • 瀏覽器行為跟蹤(如跟蹤分析用戶行為等)。

Cookie 的特點:

  • Cookie 的大小受限,一般為 4 KB;
  • 同一個域名下存放 Cookie 的個數是有限制的,不同瀏覽器的個數不一樣,一般為 20 個;
  • Cookie 支持設置過期時間,當過期時自動銷毀;
  • 每次發起同域下的 HTTP 請求時,都會攜帶當前域名下的 Cookie;
  • 支持設置為 HttpOnly,防止 Cookie 被客戶端的 JavaScript 訪問。

「示例1:簡單用法」

 

  1. document.cookie = "name=semlinker"
  2. document.cookie = "favorite_food=tripe"
  3.  
  4. alert(document.cookie); 
  5. // 顯示: name=semlinker;favorite_food=tripe 

「示例2:得到名為 test2 的 cookie」

 

  1. document.cookie = "test1=Hello"
  2. document.cookie = "test2=World"
  3.  
  4. var myCookie = document.cookie 
  5.     .replace(/(?:(?:^|.*;\s*)test2\s*\=\s*([^;]*).*$)|^.*$/, "$1"); 
  6. alert(myCookie); 

3.2 localStorage

一種持久化的存儲方式,也就是說如果不手動清除,數據就永遠不會過期。它是采用鍵值對的方式存儲數據,按域名將數據分別保存到對應數據庫文件里。相比 Cookie 來說,它能保存更大的數據。

localStorage 的特點:

  • 大小限制為 5MB ~10MB;
  • 在同源的所有標簽頁和窗口之間共享數據;
  • 數據僅保存在客戶端,不與服務器進行通信;
  • 數據持久存在且不會過期,重啟瀏覽器后仍然存在;
  • 對數據的操作是同步的。

「示例」

 

  1. // 通過setItem()增加一個數據項 
  2. localStorage.setItem('myName''Semlinker'); 
  3.  
  4. // 通過getItem()獲取某個數據項 
  5. let me = localStorage.getItem('myName'); 
  6.  
  7. // 通過removeItem()移除某個數據項 
  8. localStorage.removeItem('myName'); 
  9.  
  10. // 移除所有數據項 
  11. localStorage.clear(); 

3.3 sessionStorage

與服務端的 session 類似,sessionStorage 是一種會話級別的緩存,關閉瀏覽器時數據會被清除。需要注意的是 sessionStorage 的作用域是窗口級別的,也就是說不同窗口之間保存的 sessionStorage 數據是不能共享的。

  • sessionStorage 的特點:
  • sessionStorage 的數據只存在于當前瀏覽器的標簽頁;
  • 數據在頁面刷新后依然存在,但在關閉瀏覽器標簽頁之后數據就會被清除;
  • 與 localStorage 擁有統一的 API 接口;
  • 對數據的操作是同步的。

「示例」

 

  1. // 通過setItem()增加一個數據項 
  2. sessionStorage.setItem('myName''Semlinker'); 
  3.  
  4. // 通過getItem()獲取某個數據項 
  5. let me = sessionStorage.getItem('myName'); 
  6.  
  7. // 通過removeItem()移除某個數據項 
  8. sessionStorage.removeItem('myName'); 
  9.  
  10. // 移除所有數據項 
  11. sessionStorage.clear(); 

3.4 Web SQL

Web SQL 數據庫 API 實際上不是 HTML5 規范的一部分,而是一個單獨的規范,它引入了一組 API 來使用 SQL 來操作客戶端數據庫。需要注意的是,HTML5 已經放棄 Web SQL 數據庫。

Web SQL Database 規范中定義的三個核心方法:

  • openDatabase:這個方法使用現有數據庫或新建數據庫來創建數據庫對象;
  • transaction:這個方法允許我們根據情況控制事務的提交或回滾;
  • executeSql:這個方法用于執行真實的 SQL 語句。

Web SQL 的特點(相比 Cookie、localStorage 與 sessionStorage):

  • Web SQL 能方便進行對象存儲;
  • Web SQL 支持事務,能方便地進行數據查詢和數據處理操作。

「示例」

 

  1. var db = openDatabase('mydb''1.0''Test DB', 2 * 1024 * 1024); 
  2.  
  3. db.transaction(function (tx) {  
  4.    // 執行查詢操作 
  5.    tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');  
  6.    // 執行插入操作 
  7.    tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "foobar")');  
  8.    tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "logmsg")');  
  9. });  

3.5 IndexedDB

IndexedDB 是一種底層 API,用于客戶端存儲大量結構化數據,包括文件、二進制大型對象。該 API 使用索引來實現對該數據的高性能搜索。雖然 Web Storage 對于存儲較少量的數據很有用,但對于存儲更大量的結構化數據來說,這種方法不太好用。IndexedDB 提供了一個解決方案。

IndexedDB 的特點:

  • 存儲空間大:存儲空間可以達到幾百兆甚至更多;
  • 支持二進制存儲:它不僅可以存儲字符串,而且還可以存儲二進制數據;
  • IndexedDB 有同源限制,每一個數據庫只能在自身域名下能訪問,不能跨域名訪問;
  • 支持事務型:IndexedDB 執行的操作會按照事務來分組的,在一個事務中,要么所有的操作都成功,要么所有的操作都失敗;
  • 鍵值對存儲:IndexedDB 內部采用對象倉庫(object store)存放數據。所有類型的數據都可以直接存入,包括 JavaScript 對象。對象倉庫中,數據以 “鍵值對” 的形式保存,每一個數據記錄都有對應的主鍵,主鍵是獨一無二的,不能有重復,否則會拋出一個錯誤。
  • 數據操作是異步的:使用 IndexedDB 執行的操作是異步執行的,以免阻塞應用程序。

「示例」

 

  1. var dbName = "my_db"
  2.  
  3. var request = indexedDB.open(dbName, 2); 
  4.  
  5. request.onerror = function(event) { 
  6.   // 錯誤處理 
  7. }; 
  8.  
  9. request.onupgradeneeded = function(event) { 
  10.   var db = event.target.result; 
  11.  
  12.   // 建立一個對象倉庫來存儲我們客戶的相關信息,我們選擇 ssn 作為鍵路徑(key path) 
  13.   // 因為 ssn 可以保證是不重復的 
  14.   var objectStore = db.createObjectStore("customers", { keyPath: "ssn" }); 
  15.  
  16.   // 建立一個索引來通過姓名來搜索客戶。名字可能會重復,所以我們不能使用 unique 索引 
  17.   objectStore.createIndex("name""name", { uniquefalse }); 
  18.  
  19.   // 使用郵箱建立索引,我們確保客戶的郵箱不會重復,所以我們使用 unique 索引 
  20.   objectStore.createIndex("email""email", { uniquetrue }); 
  21.  
  22.   // 使用事務的 oncomplete 事件確保在插入數據前對象倉庫已經創建完畢 
  23.   objectStore.transaction.oncomplete = function(event) { 
  24.     // 將數據保存到新創建的對象倉庫 
  25.     var customerObjectStore = db.transaction("customers""readwrite").objectStore("customers"); 
  26.     customerData.forEach(function(customer) { 
  27.       customerObjectStore.add(customer); 
  28.     }); 
  29.   }; 
  30. }; 

篇幅有限這里我們只介紹了部分開源庫,其實還有一些其它成熟的開源庫,比如 lowdb(Local JSON Database)、Lovefield(Relational Database)和 LokiJS(NoSQL Database)等

責任編輯:華軒 來源: 全棧修仙之路
相關推薦

2017-12-28 10:27:28

2019-07-15 15:45:00

5.0Gs PCIe 4.0

2012-11-08 10:15:05

2017-01-15 14:18:35

大數據HadoopScrapy

2021-08-30 08:40:02

網頁404HTTP

2016-10-26 08:57:13

HadoopScrapy大數據

2021-04-21 14:22:08

前端開發技術

2018-01-24 05:08:24

2018-10-09 13:23:22

2015-06-24 15:35:54

2012-06-19 09:21:17

BYOD

2020-07-06 07:24:52

微信微信公眾平臺移動應用

2022-12-02 08:48:16

CSS置灰網站

2017-02-20 16:03:35

Android We谷歌硬件

2015-08-10 14:54:57

公有云云安全數據加密

2019-06-11 15:05:51

數據庫數據庫技巧SQL調優

2015-06-05 11:06:55

iOS 9蘋果WWDC

2020-04-17 11:45:30

程序員技術創業

2020-07-29 22:46:59

容器KubernetesPaaS

2015-08-13 15:56:44

HTML5本地存儲Localstorag
點贊
收藏

51CTO技術棧公眾號

欧美日韩的一区二区| 成人免费视频视频在线观看免费| 亚洲欧美激情视频| 奇米影音第四色| 国产成人午夜| ww久久中文字幕| 国产欧美精品一区二区| 久久精品视频8| 激情五月综合网| 欧美一区二区三区在线电影 | 丰满饥渴老女人hd| 在线成人av观看| 亚洲欧美日韩国产综合| 麻豆av一区二区三区| 国产麻豆91视频| 国产精品日本| 欧美成人免费在线视频| 日本高清www| 欧美第一在线视频| 欧洲精品在线观看| 欧美亚洲黄色片| 最新av网站在线观看 | 欧美调教femdomvk| 亚洲熟妇无码一区二区三区导航| 97超碰人人在线| aaa国产一区| 97夜夜澡人人双人人人喊| 天堂av免费在线观看| 国产一区激情| 精品久久久999| 久久成人激情视频| 五月激激激综合网色播| 在线观看91av| 波多结衣在线观看| 色老太综合网| 欧美日韩加勒比精品一区| 欧美 国产 精品| av在线免费观看网站| 2023国产一二三区日本精品2022| dy888夜精品国产专区| 91国偷自产中文字幕久久| 久久最新视频| 欧洲一区二区视频| 久久午夜免费视频| 亚洲巨乳在线| 97在线视频精品| 久久综合激情网| 欧美在线网站| 欧美另类极品videosbest最新版本| 美国黄色特级片| 欧美视频免费| 在线观看亚洲区| 国产91丝袜美女在线播放| 九一国产精品| 亚洲人成网7777777国产| 欧洲一级黄色片| 一区三区在线欧| 日韩国产欧美精品一区二区三区| 制服丝袜第一页在线观看| baoyu135国产精品免费| 欧美一级午夜免费电影| 国产成人精品综合久久久久99| 国产精品毛片无码| 日韩一区二区精品| 久久久久久久久久影视| 波多野结衣欧美| 亚洲成人亚洲激情| 成人免费av片| 国产成人调教视频在线观看 | 99riav国产精品视频| 中文字幕一区二区三区中文字幕| 精品久久国产字幕高潮| 波多野结衣一二三区| 天天躁日日躁狠狠躁欧美| 国产视频丨精品|在线观看| 中文字幕被公侵犯的漂亮人妻| 精品成av人一区二区三区| 伊人伊成久久人综合网小说| youjizz亚洲女人| 中文字幕亚洲精品乱码| 久久久久久亚洲精品中文字幕| 国产精品第108页| 国产女优一区| 国产精品久久久久国产a级| 一区二区日韩视频| 国产精品1区二区.| 国产在线精品二区| 成人在线观看黄色| 一区二区三区产品免费精品久久75| 日本男女交配视频| 欧美日韩视频网站| 91精品国产综合久久蜜臀| 亚洲午夜久久久久久久久| 亚洲综合福利| 久久久999成人| 男人的天堂一区| 免费高清在线一区| 国产美女精品在线观看| 狠狠色伊人亚洲综合网站l| 日韩一区日韩二区| 一二三四视频社区在线| 中韩乱幕日产无线码一区| 日韩午夜中文字幕| 熟女高潮一区二区三区| 一区二区国产在线| 国产成人jvid在线播放| 91麻豆视频在线观看| 国产成人在线影院| 日韩在线观看电影完整版高清免费| 成人黄色在线电影| 欧美性猛交xxxx久久久| 中文 日韩 欧美| 欧美女优在线视频| 欧美黑人xxx| 中文字幕av在线免费观看| 不卡的av电影在线观看| 黄色免费高清视频| 电影亚洲精品噜噜在线观看| 日韩欧美久久久| 日韩av片在线| 国产日本精品| 国产伦精品一区二区三| 欧美尤物美女在线| 色婷婷久久99综合精品jk白丝| 丰满人妻一区二区三区大胸| 成人羞羞视频播放网站| 欧美激情亚洲精品| 国产精品一品二区三区的使用体验| 91蜜桃视频在线| 久久亚洲国产成人精品无码区| 成人在线免费电影网站| 国产丝袜一区视频在线观看| 久久中文字幕无码| 国产精品亚洲一区二区三区在线 | 亚洲国产成人av好男人在线观看| 亚洲精品自拍网| 国产精品一国产精品| 海角国产乱辈乱精品视频| 国产精品嫩草影院桃色| 国产精品美女视频| 日韩免费高清在线| 亚洲大片精品免费| 欧洲精品在线视频| 色播色播色播色播色播在线| 亚洲第一在线综合网站| 欧美人与性动交α欧美精品| 羞羞答答成人影院www| 国产精品中文在线| 1769在线观看| 欧美久久久久免费| 97精品在线播放| 久久精品国产99| 一区二区三区久久网| 国产精品麻豆成人av电影艾秋| 一区二区成人精品| 亚洲精品一区二区二区| 欧美激情综合网| 国产一区二区在线免费播放| 成人精品影院| 成人久久精品视频| 国产写真视频在线观看| 欧美一区二区三区视频免费播放| 国产黄色小视频网站| 国产在线精品一区二区| 麻豆映画在线观看| ccyy激情综合| 欧美怡春院一区二区三区| 欧美777四色影视在线| 91国产精品成人| 殴美一级黄色片| 国产一区二区三区免费播放| 亚洲天堂第一区| 日韩一区二区电影网| 欧美精品成人一区二区在线观看 | 欧美一二三区视频| 99久久er热在这里只有精品66| 国产毛片久久久久久国产毛片| 亚洲一区二区三区四区电影| 久久久久久久一区二区三区| 无码国产精品一区二区色情男同 | 国产成人精品一区二区色戒| 国产精品久久久久久一区二区三区 | 91社区国产高清| 久色国产在线| 亚洲毛片一区二区| 91中文字幕在线视频| 夜夜嗨av一区二区三区中文字幕 | 成人高潮a毛片免费观看网站| 国产女优一区| 国产精品视频免费一区| 亚洲天堂资源| 日韩性xxxx爱| 亚洲欧美激情国产综合久久久| 日韩欧美在线第一页| 日本少妇aaa| www.视频一区| 久久这里只精品| 国内精品久久久久久久影视麻豆| 久久精品日韩精品| 99精品美女视频在线观看热舞| 久久久亚洲成人| 成年午夜在线| 亚洲国产成人爱av在线播放| 中国一级片黄色一级片黄| 亚洲激情中文1区| 欧美老熟妇乱大交xxxxx| 国产乱码一区二区三区| 玩弄japan白嫩少妇hd| 欧美日韩精品一本二本三本 | 日本高清视频网站| 欧美视频日韩视频在线观看| 久草国产在线视频| 欧美韩国日本一区| 欧美一区二区免费在线观看| 美国三级日本三级久久99| 免费看国产曰批40分钟| 91tv精品福利国产在线观看| 欧美高清视频一区| 超碰成人在线观看| 91欧美精品午夜性色福利在线 | 欧美日韩视频在线| 中文字幕av久久爽av| 欧美高清在线视频| 北岛玲一区二区| 国产不卡视频在线观看| 午夜剧场在线免费观看| 老司机亚洲精品| 欧美国产亚洲一区| 亚洲视频免费| 91大学生片黄在线观看| 久久大综合网| 亚洲综合首页| av永久不卡| 欧美日韩在线观看一区| 精品视频在线你懂得| 91精品入口蜜桃| 91精品亚洲一区在线观看| 国产精品久久久久9999| 欧美freesex| 青草青草久热精品视频在线观看| 成全电影大全在线观看| 色综合老司机第九色激情| 麻豆网站在线免费观看| 中文字幕av日韩| 国产露出视频在线观看| 亚洲欧美国产日韩天堂区| 性感美女福利视频| 亚洲精品国产免费| 天堂在线观看免费视频| 亚洲国产精品一区二区三区| 亚洲第一天堂影院| 欧美大片拔萝卜| 韩国av免费在线| 亚洲成人免费网站| 亚洲欧美日韩免费| 亚洲乱码av中文一区二区| 色综合888| 亚洲欧美国产制服动漫| 成年人视频免费在线观看| 在线亚洲欧美视频| 午夜免费福利在线观看| 久久伊人色综合| 婷婷丁香在线| 91爱视频在线| 性欧美又大又长又硬| 日本一区二区三区四区视频| 亚洲成人激情社区| 国产精品夜间视频香蕉| 国产精品国产亚洲精品| 国产乱码精品一区二区三区中文 | 亚洲精品国产系列| 亚州av乱码久久精品蜜桃| www.69av| 亚洲欧美清纯在线制服| 8x8x最新地址| 国产自产视频一区二区三区| 精产国品一区二区三区| 91蜜桃视频在线| 国产精品无码无卡无需播放器| 国产精品久久久久久久久动漫 | 欧美日韩国产激情| 中文字幕在线观看视频免费| 欧美精品色一区二区三区| www.桃色av嫩草.com| 日韩精品免费在线| 最新国产在线观看| 久久久久久久久久久91| 怡红院成人在线| 亚洲最大成人免费视频| 日韩欧美在线精品| 国产精品波多野结衣| 影音先锋中文字幕一区| 国产天堂在线播放| 国产白丝精品91爽爽久久| 97超碰在线资源| 一区二区在线看| 少妇无套内谢久久久久| 欧美videossexotv100| 国产在线视频你懂得| 久久久精品久久久| 欧美自拍电影| 91久色国产| 精品国产一区探花在线观看 | 欧美日韩精品一区视频| 神马午夜电影一区二区三区在线观看 | 97精品一区二区三区| 九九久久国产| 国产一区二区三区无遮挡| 日本精品黄色| 男人和女人啪啪网站| 国产一区二区看久久| 亚洲天堂久久新| 亚洲va欧美va天堂v国产综合| 做爰视频毛片视频| 亚洲国产精彩中文乱码av在线播放 | 亚州一区二区三区| 国产日韩欧美精品| 亚洲精品小说| 一级黄色香蕉视频| 972aa.com艺术欧美| 欧美成人精品欧美一| 欧美日韩美少妇| 欧美日韩影视| 91精品国产高清久久久久久91| 国产激情一区| 亚洲精品一区二区三| 免费亚洲一区| 美女扒开腿免费视频| 亚洲免费色视频| 国产又粗又大又爽视频| 国产一区二区欧美日韩| 桃色av一区二区| 国产一区精品在线| 亚洲视频日本| 亚洲一区和二区| 一区二区欧美视频| 国产三级按摩推拿按摩| 日韩亚洲精品视频| 亚洲综合av一区二区三区| 欧美日韩国产一二| 美女国产一区| 人妻熟女aⅴ一区二区三区汇编| 亚洲va欧美va人人爽午夜| 蜜桃视频污在线观看| 欧美激情视频网站| 亚洲一区二区三区在线免费| 美女黄色片网站| 国产乱人伦偷精品视频免下载 | 国际av在线| 日韩av手机在线| 激情综合网站| 一区二区三区韩国| 中文字幕一区二区三区四区| 国产精品久久久久精| 久久成人精品电影| 精品中文字幕一区二区三区| 日本一道在线观看| 懂色中文一区二区在线播放| 国产中文字幕免费| 日韩av在线免费播放| 小草在线视频免费播放| 欧美视频观看一区| 美国毛片一区二区三区| 黄色a级片在线观看| 欧美成人性福生活免费看| 97天天综合网| 久久综合久久综合这里只有精品| 欧美一级久久| 欧美色图17p| 欧美一区二区在线观看| 久操免费在线| 国产精品乱码视频| 视频精品一区二区| 日本激情视频一区二区三区| 欧美α欧美αv大片| 日韩电影免费看| 亚洲免费视频一区| 国产乱人伦偷精品视频不卡| 日本最新中文字幕| 国产亚洲欧美日韩一区二区| japansex久久高清精品| 欧美又粗又长又爽做受| 啊v视频在线| 亚洲黄色av女优在线观看| 97成人资源| 一本色道久久99精品综合| 国产精品亚洲视频| 亚洲男人第一av| 色青青草原桃花久久综合| 97久久综合区小说区图片区| 激情网站五月天| 亚洲免费观看高清完整版在线 | 亚洲欧洲高清| 黄色网zhan| 久久嫩草精品久久久精品一| 国产又黄又粗又长| 欧美一级大胆视频| 在线成人激情| 国产亚洲精品熟女国产成人| 日韩一区二区三区视频|