html5 瀏覽器端數據庫


為什么使用瀏覽器端數據庫:隨着瀏覽器的處理能力不斷增強,越來越多的網站開始考慮,將大量數據儲存在客戶端,這樣可以減少用戶等待從服務器獲取數據的時間。

一、localStorage  — 本地存儲  可以長期存儲數據,沒有時間限制。

      可以存儲 :數組、json數據、圖片、腳本、樣式文件

復制代碼
  function test(){
        if(window.localStorage){//判斷瀏覽器是否支持 localStorage
             var ls=window.localStorage;
             ls.setItem("name","張三");//設置值
             var name= ls.getItem("name");//取值
              ls.removeItem("name");//刪除數據
            }else{
             alert('瀏覽器不支持 localStorage');
        }
    }
復制代碼

 存在的局限性: 子域名之間不能共享存儲數據;超出存儲范圍后可以使用 LRU、FIFO 技術處理;

二、sessionStorage生命周期為當前窗口或標簽頁,一旦窗口或標簽頁被永久關閉了,那么所有通過sessionStorage存儲的數據也就被清空了。

三、IndexedDB

1、使用IndexedDB的原因

      現有的瀏覽器端數據儲存方案,都不適合儲存大量數據:cookie不超過4KB,且每次請求都會發送回服務器端;Window.name屬性缺乏安全性,

 且沒有統一的標准;localStorage在2.5MB到10MB之間(各家瀏覽器不同)。所以,需要一種新的   解  決方案,這就是IndexedDB誕生的背景。

2、什么是IndexedDB

        通俗地說,IndexedDB就是瀏覽器端數據庫,可以被網頁腳本程序創建和操作。它允許儲存大量數據,提供查找接口,還能建立索引。

  這些都是localStorage所不具備的。就數據庫類型而言,IndexedDB不屬於關系型數據庫(不支持SQL查詢語   句),更接近NoSQL數據庫。

3、IndexedDB的特點。

(1)      鍵值對儲存。 IndexedDB內部采用對象倉庫(object store)存放數據。所有類型的數據都可以直接存入,包括JavaScript對象。在對象倉庫中,

        數據以“鍵值對”的形式保存,每一個數據都有對應的鍵名,鍵名是獨一無二的,不能有重復,否則會拋出一個錯誤。

(2)異步。 IndexedDB操作時不會鎖死瀏覽器,用戶依然可以進行其他操作,這與localStorage形成對比,后者的操作是同步的。異步設計是為了防止大量數據的讀寫,拖慢網頁的表現。

(3)支持事務。 IndexedDB支持事務(transaction),這意味着一系列操作步驟之中,只要有一步失敗,整個事務就都取消,數據庫回到事務發生之前的狀態,不存在只改寫一部分數據的情況。

(4)同域限制 IndexedDB也受到同域限制,每一個數據庫對應創建該數據庫的域名。來自不同域名的網頁,只能訪問自身域名下的數據庫,而不能訪問其他域名下的數據庫。

(5)儲存空間大 IndexedDB的儲存空間比localStorage大得多,一般來說不少於250MB。IE的儲存上限是250MB,Chrome和Opera是剩余空間的某個百分比,Firefox則沒有上限。

(6)支持二進制儲存。 IndexedDB不僅可以儲存字符串,還可以儲存二進制數據。

目前,Chrome 27+、Firefox 21+、Opera 15+和IE 10+支持這個API,但是Safari完全不支持。

4、使用

    a. 判斷瀏覽器是否支持Indexed DB

 View Code

   b.創建/打開數據庫

 View Code

  c.關閉數據庫

 View Code

 d. 對數據的操作

  事務 在對新數據庫做任何事情之前,需要開始一個事務。事務中需要指定該事務跨越哪些object store。
  事務具有三種模式
    只讀:read,不能修改數據庫數據,可以並發執行
    讀寫:readwrite,可以進行讀寫操作
    版本變更:verionchange

       d1.添加數據

 View Code

      d2. 通過鍵獲取數據

 View Code

    d3.讀取集合

 View Code

  d4. 更新數據

 View Code

  d5.刪除數據

 View Code

 d6.清空數據

 View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM