《Html5 實例》閱讀筆記(三)

  1. HTML5 引入了兩個用于本地存儲的 API, 分別是 sessionStoragelocalStorage,二者的使用方式是相同的固蚤,不同的是所存儲數(shù)據的存在時長。sessionStorage 存儲的數(shù)據會在瀏覽器關閉的時候被清除蔚约,而 localStorage 存儲的數(shù)據會長期存在吃媒,除非用戶主動清除數(shù)據。使用方式如下爹袁。
    var user_id = "123456";

         var user_data = {
             name: "Timo",
             sex: "unkown",
             tel: "666666"
         }
    
         //檢測瀏覽器是否支持 Storage APIs
         var storage_support = window.sessionStorage || window.localStorage;
    
         if (storage_support) {
             localStorage.setItem(user_id, JSON.stringify(user_data));
             sessionStorage.setItem(user_id, JSON.stringify(user_data));
         }
    

上面的代碼用到了 JSON.stringify() 方法远荠,一般來說我們用 JSON 來序列化復雜的數(shù)據對象。既然我們將數(shù)據保存下來了失息,那么我們如何獲取呢譬淳?
var user_id = "123456";
var user_data = {};

        if (sessionStorage.getItem(user_id)) {
            user_data = JSON.parse(sessionStorage.getItem(user_id));
        } else if (localStorage.getItem(user_id)) {
            user_data = JSON.parse(localStorage.getItem(user_id));
        }

大多數(shù)的瀏覽器會給這些存儲器 5MB 的空間,這對于 localStorage 可能就有點不夠用了盹兢,畢竟它存儲的數(shù)據根本就沒有過期期限邻梆,除非用戶明確的刪除它們。所以绎秒,我們需要手動的設置一種過期機制浦妄,下面我們設置當數(shù)據存在 10 天之后就自動刪除的功能。
//檢測瀏覽器是否支持 Storage APIs
var storage_support = window.localStorage;

        if (storage_support) {
            localStorage.setItem(user_id, JSON.stringify(user_data));

            //下面開始刪除過期數(shù)據
            var key, data;
            for (var i = 0; i < localStorage.length; i++) {
                key = localStorage.key(i);
                data = localStorage.getItem(key);
                if (data.ts < ((new Date()) - 60 * 60 * 24 * 10)) {
                    localStorage.removeItem(key);
                }
            }
        }

可見见芹,我們是在每次保存好數(shù)據剂娄,然后進行檢測,一旦發(fā)現(xiàn)存在時間超過十天的數(shù)據玄呛,就對其進行刪除宜咒。

  1. HTML5 定義了一個特殊的應用程序緩存,通常叫作 appcache把鉴,我們可以利用這個告訴瀏覽器我們想要緩存的 html, js, html 或者圖片資源故黑。首先,我們需要創(chuàng)建一個 manifest 文件庭砍,比如下面
    CACHE MANIFEST

       CACHE:
       index01.html
    

這個文件表明场晶,我們想要緩存 index01.html ,想要具備離線緩存功能怠缸,我們還需要給 html 元素添加一個屬性诗轻。
<html lang="en" manifest="cache.manifest">
當我們的頁面配置發(fā)生了變化,比如說我們緩存的 index01.html 文件內容發(fā)生了變化揭北,瀏覽器并不會重新緩存 index01.html扳炬,因為 manifest 文件并沒有更新吏颖,所以瀏覽器呈現(xiàn)的還是變化前的界面,這就非常煩人了恨樟,但是有一種非常簡單的方法可以解決這個問題半醉,我們只需要在文件中添加一行注釋,如下所示
CACHE MANIFEST
# cache version: 01

        CACHE:
        index01.html

每當我們更新緩存文件的內容的時候劝术,就讓注釋的版本增加缩多,這樣的話瀏覽器就會察覺到 manifest 的變化,然后去更新 appcache 的內容养晋,不過這么做有個缺點衬吆,那就是瀏覽器即使察覺到了 manifest, 它仍然會加載原來的界面直到下次再打開瀏覽器才會顯示更新后的界面绳泉。當然逊抡,這種情況我們可以在 JS 中調節(jié)它。
// 檢查當前瀏覽器是否支持 appcache
var appcache_support = !!window.applicationCache;

        if (appcache_support) {
            var cache = applicationCache;
            cache.addEventListener("updateready", function () {
                if (cache.status == cache.UPDATEREADY) {
                    cache.swapCache();
                    console.log("update");
                }
            }, false);
        }
  1. HTML5 提供了 Web Workers 用以執(zhí)行耗時任務零酪,這個任務是處在一個單獨線程中的冒嫡,不占用 UI 線程,所以不會引起界面卡頓蛾娶。詳細的使用規(guī)范灯谣,可以參見 W3C Web Worker.

  2. 如果想要創(chuàng)建在 Web 應用程序和服務器之間的持久的潜秋,雙向的通信蛔琅,以便瀏覽器和服務器都能夠按照彼此的需要發(fā)送和接收信息,那么你可能會用到 Web Sockets峻呛,由于對于 Web Sockets 的一致的瀏覽器支持是很難得罗售,所以最佳的做法是使用Socket.io 中的一個庫。想要了解更多的信息钩述,可以參見 Socket.io.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末寨躁,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子牙勘,更是在濱河造成了極大的恐慌职恳,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件方面,死亡現(xiàn)場離奇詭異放钦,居然都是意外死亡,警方通過查閱死者的電腦和手機恭金,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門操禀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人横腿,你說我怎么就攤上這事颓屑〗锛牛” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵揪惦,是天一觀的道長遍搞。 經常有香客問我,道長丹擎,這世上最難降的妖魔是什么尾抑? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮蒂培,結果婚禮上再愈,老公的妹妹穿的比我還像新娘。我一直安慰自己护戳,他們只是感情好翎冲,可當我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著媳荒,像睡著了一般抗悍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钳枕,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天缴渊,我揣著相機與錄音,去河邊找鬼鱼炒。 笑死衔沼,一個胖子當著我的面吹牛,可吹牛的內容都是我干的昔瞧。 我是一名探鬼主播指蚁,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼自晰!你這毒婦竟也來了凝化?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤酬荞,失蹤者是張志新(化名)和其女友劉穎搓劫,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體混巧,經...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡枪向,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了牲剃。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遣疯。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出缠犀,到底是詐尸還是另有隱情数苫,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布辨液,位于F島的核電站虐急,受9級特大地震影響,放射性物質發(fā)生泄漏滔迈。R本人自食惡果不足惜止吁,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望燎悍。 院中可真熱鬧敬惦,春花似錦、人聲如沸谈山。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奏路。三九已至畴椰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鸽粉,已是汗流浹背斜脂。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留触机,地道東北人帚戳。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像威兜,于是被迫代替她去往敵國和親销斟。 傳聞我的和親對象是個殘疾皇子庐椒,可洞房花燭夜當晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內容