HTML5存儲(chǔ)總結(jié)

h5的存儲(chǔ)方式有如下幾種

1、web storage

  • 本地存儲(chǔ)local storage
  • 本地存儲(chǔ)session storage

2、離線緩存(application cache)
3、Web SQL
4、IndexedDB

1、web storage

存儲(chǔ)形式:key-->value
存儲(chǔ)內(nèi)容:數(shù)組、json、圖片、腳本、樣式等可以序列化為字符串的內(nèi)容
使用場(chǎng)景:利用本地?cái)?shù)據(jù),減少網(wǎng)絡(luò)傳輸,弱網(wǎng)高延遲低帶寬,盡量數(shù)據(jù)本地化
大小限制:每個(gè)域名5M

** 本地存儲(chǔ)local storage - 沒有時(shí)間限制的數(shù)據(jù)存儲(chǔ) **

域內(nèi)安全、永久保存,除非手動(dòng)刪除

if(typeof(Storage) !== "undefined") {

          // localStorage.setItem(鍵名,鍵值)      存儲(chǔ)數(shù)據(jù)信息到本地
          // localStorage.getItem(鍵名)      讀取本地存儲(chǔ)的信息
          // localStorage.removeItem(鍵名)   刪除本地存儲(chǔ)的信息
          // localStorage.clear()        清空所有存儲(chǔ)的信息
    var value = "張三";
    //存儲(chǔ)
    localStorage.setItem("key", value);
    //取值
    var name = localStorage.getItem("key");
    console.log(name);
    //刪除
    localStorage.removeItem("key");
    //清空localStorage信息
    localStorage.clear()
} else {

    console.log("瀏覽器不支持web Storage")
}

** 本地存儲(chǔ)session storage - 針對(duì)一個(gè) session 的數(shù)據(jù)存儲(chǔ) **

短期保存,重啟瀏覽器、關(guān)閉頁面或新開頁面時(shí)失效

if(typeof(Storage) !== "undefined") {

 //sessionStorage.setItem(鍵名,鍵值)       存儲(chǔ)數(shù)據(jù)信息到本地
 //sessionStorage.getItem(鍵名)       讀取本地存儲(chǔ)的信息
 //sessionStorage.removeItem(鍵名)    刪除本地存儲(chǔ)的信息
 //sessionStorage.clear ()        清空所有存儲(chǔ)的信息

    var value = "張三";
    //存儲(chǔ)
    se.setItem("key", value);
    //取值
    var name = localStorage.getItem("key");
    console.log(name);
    //刪除
    localStorage.removeItem("key");
    //清空localStorage信息
    localStorage.clear()
} else {

    console.log("瀏覽器不支持web Storage")
}

2、離線緩存(application cache)

使用 HTML5,通過創(chuàng)建 cache manifest 文件,可以輕松地創(chuàng)建 web 應(yīng)用的離線版本。

HTML5 引入了應(yīng)用程序緩存,這意味著 web 應(yīng)用可進(jìn)行緩存,并可在沒有因特網(wǎng)連接時(shí)進(jìn)行訪問。

應(yīng)用程序緩存為應(yīng)用帶來三個(gè)優(yōu)勢(shì):

  • 離線瀏覽 - 用戶可在應(yīng)用離線時(shí)使用它們
  • 速度 - 已緩存資源加載得更快
  • 減少服務(wù)器負(fù)載 - 瀏覽器將只從服務(wù)器下載更新過或更改過的資源。

所有主流瀏覽器均支持應(yīng)用程序緩存,除了 Internet Explorer。

未完待續(xù)...

請(qǐng)參考
http://www.w3school.com.cn/html5/html_5_app_cache.asp

3、Web SQL

Web SQL 數(shù)據(jù)庫可以在最新版的 Safari, Chrome 和 Opera 瀏覽器中工作

核心方法:

  • openDatabase:這個(gè)方法使用現(xiàn)有的數(shù)據(jù)庫或者新建的數(shù)據(jù)庫創(chuàng)建一個(gè)數(shù)據(jù)庫對(duì)象。
  • transaction:這個(gè)方法讓我們能夠控制一個(gè)事務(wù),以及基于這種情況執(zhí)行提交或者回滾。
  • executeSql:這個(gè)方法用于執(zhí)行實(shí)際的 SQL 查詢。

打開數(shù)據(jù)庫:

  var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024,fn);
  //openDatabase() 方法對(duì)應(yīng)的五個(gè)參數(shù)分別為:數(shù)據(jù)庫名稱、版本號(hào)、描述文本、數(shù)據(jù)庫大小、創(chuàng)建回調(diào)

執(zhí)行查詢操作:

  var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
  db.transaction(function (tx) { 
     tx.executeSql('CREATE TABLE IF NOT EXISTS WIN (id unique, name)');
  });

插入數(shù)據(jù):

  var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
  db.transaction(function (tx) {
     tx.executeSql('CREATE TABLE IF NOT EXISTS WIN (id unique, name)');
     tx.executeSql('INSERT INTO WIN (id, name) VALUES (1, "winty")');
     tx.executeSql('INSERT INTO WIN (id, name) VALUES (2, "LuckyWinty")');
  });

讀取數(shù)據(jù):

  db.transaction(function (tx) {
     tx.executeSql('SELECT * FROM WIN', [], function (tx, results) {
        var len = results.rows.length, i;
        msg = "<p>查詢記錄條數(shù): " + len + "</p>";
        document.querySelector('#status').innerHTML +=  msg;
 
        for (i = 0; i < len; i++){
           alert(results.rows.item(i).name );
        }
 
     }, null);
  });

具體代碼可參考我的另一篇關(guān)于數(shù)據(jù)庫文章
鏈接如下:
http://m.itdecent.cn/p/ba69532c0b00

4、IndexedDB

http://www.cnblogs.com/dolphinX/p/3415761.html
http://www.cnblogs.com/dolphinX/p/3416889.html

H5之前

主要使用cookies

數(shù)據(jù)大?。鹤鳛榇鎯?chǔ)容器,cookie的大小限制在4KB左右。
安全性問題:由于在HTTP請(qǐng)求中的cookie是明文傳遞,有安全性隱患。
網(wǎng)絡(luò)負(fù)擔(dān):cookie會(huì)被附加在每個(gè)HTTP請(qǐng)求中,在HttpRequest 和HttpResponse的header中都是要被傳輸?shù)模詿o形中增加了一些不必要的流量損失。

兼容問題:

本地存儲(chǔ)是H5的新貴,但是對(duì)于老、舊的瀏覽器來說怎么辦?那就不用老古董瀏覽器唄,或者使用cookie作為替代。因?yàn)榇蠖嗍褂胠ocalStorage是用來存儲(chǔ)字符串的,在其他編譯型的語言看來,存儲(chǔ)字符串能做些什么,但在JavaScript身上,舊大放光彩,可以存儲(chǔ)JSON格式的字符串來擴(kuò)展應(yīng)用,可以存儲(chǔ)類名變量值等等信息再通過eval()來感受使用JS的快感。既然localStorage是存儲(chǔ)字符串的,那么在老古董瀏覽器上,可以通過使用Cookies來做替代方案并做好域內(nèi)安全。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,715評(píng)論 19 139
  • 本文介紹本地?cái)?shù)據(jù)存儲(chǔ)的選型。簡單總結(jié)一些查詢到的關(guān)于本地?cái)?shù)據(jù)存儲(chǔ)的技術(shù)。 控制臺(tái)展示前端存儲(chǔ) Chrome: 前端...
    謝大見閱讀 9,306評(píng)論 1 8
  • HTTP cookie(也稱為web cookie,網(wǎng)絡(luò)cookie,瀏覽器cookie或者簡稱cookie)是網(wǎng)...
    留七七閱讀 18,392評(píng)論 2 71
  • 轉(zhuǎn)載:H5緩存機(jī)制淺析-移動(dòng)端Web加載性能優(yōu)化【干貨】 作者:賀輝超,騰訊游戲平臺(tái)與社區(qū)產(chǎn)品部 高級(jí)工程師 目錄...
    meng_philip123閱讀 11,696評(píng)論 6 48
  • 今天將各個(gè)模塊都已經(jīng)拼接完成了,本地功能已經(jīng)完成,接下來就是繼續(xù)優(yōu)化程序,美化界面然后再將遠(yuǎn)程控制做出來!
    我叫趙健閱讀 179評(píng)論 0 0

友情鏈接更多精彩內(nèi)容