STORAGE(存儲)
Cookie
在HTML5以前我們會使用cookie,在瀏覽器端緩存一些數據,例如:登入使用者資訊,歷史搜尋資訊等等。但是cookie所支援的容量僅只有4k ,也沒有專門的api來操作,只能依賴一些開源的庫, 這裡使用cookies.js 儲存和取得cookie資訊
// 这是一个cookie值 Cookies.set('key', 'value'); // 链式调用 Cookies.set('key', 'value').set('hello', 'world'); // 可以额外设置一些参数 Cookies.set('key', 'value', { domain: 'www.example.com', secure: true }); // 设置缓存时间 Cookies.set('key', 'value', { expires: 600 }); // Expires in 10 minutes Cookies.set('key', 'value', { expires: '01/01/2012' }); Cookies.set('key', 'value', { expires: new Date(2012, 0, 1) }); Cookies.set('key', 'value', { expires: Infinity }); // 获取 Cookies.get('key');
#由此可見用cookie儲存有一下幾個缺點:
儲存資料的量比較小
本身沒有方便的api對其進行操作
cookie資訊會在http請求時加入到請求頭中,既不安全也增加了頻寬。
WEB Storage
HTML5 提拱更好的本地儲存規範localStorage 和sessionStorage , 它們將資料儲存在本地,而且在http請求時不會攜帶Storage 裡的資訊, 使用方式也很簡單:
localStorage.setItem('key', 'value'); localStorage.getItem('key'); localStorage.removeItem('key'); sessionStorage.setItem('key', 'value'); sessionStorage.getItem('key'); sessionStorage.removeItem('key');
sessionStorage 和localStorage 使用方式及特性基本上一致,唯一的差別是, sessionStorage 只在會話內有效,當瀏覽器視窗關閉,sessionStorage 快取的資料會自動被清除, 而localStorage 只要不手動清除,它會永久保存在本地。
這裡有張圖片分析了cookie 、 localStorage 、 sessionStorage 三者的區別
OFFLINE(離線)
#為了讓webapp 擁有像native app 一樣的功能和體驗, 在HTML5的規格中加入了許多新的api, 讓頁面可以在離線環境下正常存取。 service worker 和 indexedDB 兩者配合可以就可以開發離線使用的 webapp 了,由於 service worker 目前的兼容性不太好,這裡我們寫介紹下比較早的方案 application cache 。
service worker
Service Worker是基於Web Worker的事件驅動的,他們執行的機制都是新開一個執行緒去處理一些額外的,以前不能直接處理的任務。對於Web Worker,我們可以使用它來進行複雜的運算,因為它不會阻塞瀏覽器主執行緒的渲染。而Service Worker,我們可以用它來進行本地緩存,相當於一個本地的proxy。說起緩存,我們會想起我們常用的一些緩存技術來緩存我們的靜態資源,但是老的方式是不支援調試的,靈活性不高。使用Service Worker來進行緩存,我們可以用javascript程式碼來攔截瀏覽器的http請求,並設定快取的文件,直接返回,不經過web伺服器,然後,做更多你想做的事情。
因此,我們可以開發基於瀏覽器的離線應用程式。這使得我們的web應用程式減少對網路的依賴。例如,我們開發了一個新聞閱讀的web應用,當你用手機瀏覽器在有網絡的情況下打開時,你可以正常的獲取新聞內容。可是,如果手機進入飛航模式,那這個應用你就沒辦法使用了。
如果我們使用了Service Worker做緩存,瀏覽器http請求會先經過Service Worker,透過url mapping去匹配,如果匹配到了,則使用快取數據,如果匹配失敗,則繼續執行你指定的動作。一般情況下,符合失敗則讓頁面顯示「網頁無法開啟」。
service work 生命週期
service work demo
nbsp;html> <meta> <script> navigator.serviceWorker.register("/service-worker.js").then(function(serviceWorker) { console.log("success!"); }); </script>
在頁面註冊service-worker成功時就會呼叫這個js
this.oninstall = function(e) { var resources = new Cache(); var visited = new Cache(); // Fetch them. e.waitUntil(resources.add( "/index.html", "/fallback.html", "/css/base.css", "/js/app.js", "/img/logo.png" ).then(function() { // Add caches to the global caches. return Promise.all([ caches.set("v1", resources), caches.set("visited", visited) ]); })); }; this.onfetch = function(e) { e.respondWith( // Check to see if request is found in cache caches.match(e.request).catch(function() { // It's not? Prime the cache and return the response. return caches.get("visited").then(function(visited) { return fetch(e.request).then(function(response) { visited.put(e.request, response); // Don't bother waiting, respond already. return response; }); }); }).catch(function() { // Connection is down? Simply fallback to a pre-cached page. return caches.match("/fallback.html"); }); ); };
service worker 採用事件監聽機制, 上面的程式碼監聽了install 和fetch 事件,當server worker 安裝成功後,呼叫此方法,然後快取頁面的資源文件, fetch 頁面請求事件, server worker 攔截到使用者請求,當發現請求文件命中快取則從快取中取得文件,返回給頁面,無需經過伺服器,藉此達到離線的目的。
當然service worker 的功能遠不止現在這些
indexedDB
indexedDB 是一個用於本地儲存資料的nosql 資料庫,擁有極快的資料查詢速度,而且可以直接儲存js 物件。相較於web sql(sqlite)更有效率,包括索引、事務處理和健壯的查詢功能。 indexedDB特點:
1.一個網站可能有一個或多個 IndexedDB 資料庫,每個資料庫必須有惟一的名稱。
2.一個資料庫可包含一個或多個物件儲存
一個物件儲存(由一個名稱惟一標識)是一個記錄集合。每個記錄有一個鍵 和一個值。該值是一個對象,可擁有一個或多個屬性。鍵可能基於某個鍵生成器,從一個鍵路徑衍生出來,或者是明確設定。一個鍵生成器自動產生惟一的連續正整數。鍵路徑定義了鍵值的路徑。它可以是單一 JavaScript 標識符或多個由句點分隔的標識符。
基本使用方式如下:
var openRequest = indexedDB.open("auto_people", 3); var db; //数据库对象 openRequest.onupgradeneeded = function(e){ console.log("Running onupgradeeded..."); var thisDB = e.target.result; if(!thisDB.objectStoreNames.contains("people")){ thisDB.createObjectStore("people", {autoIncrement:true}); //新建一个store并设置主键自增长 } } //创建成功 openRequest.onsuccess = function(e){ console.log("success!"); db = e.target.result; //Listen for add clicks } openRequest.onerror = function(e){ console.log("error!"); console.dir(e); } //这应该站在别的地方处理,这是做一个代码展示 var transaction = db.transaction(['people'], "readwrite"); //创建一个连接 var store = transaction.objectStore("people"); //获取store var request = store.add({ name: 'myron', email: 'test@qq.com', created: new Date() }); //添加信息 request.onerror = function(e){ alert('error!'); console.dir(e); } //当添加失败时调用 request.onsuccess = function(e){ console.log('Did it!'); } //添加成功时调用 request = store.get(1); //获取第一条数据 request.onsuccess = function(e){ var result = e.target.result; console.dir(result); if(result){ //拿到存储的对象 } }
application cache
以上內容就是html5離線儲存知識詳解,希望能幫助大家。
相關推薦:
#以上是html5離線儲存知識詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

html5isamajorrevisionofthehtmlStandardThatRevolutionsWebDevelopmentBybyIntroDucingNewSemanticeLementSemelementsandAndCapabilities.1)itenhancesCodereAdabilityAndSeowitability andSeowithelientsLike,and.2)

H5的高級技巧包括:1.利用進行複雜圖形繪製,2.使用WebWorkers提升性能,3.通過WebStorage增強用戶體驗,4.實現響應式設計,5.利用WebRTC實現實時通信,6.進行性能優化和最佳實踐。這些技巧幫助開發者構建更動態、互動和高效的Web應用。

H5(HTML5)將通過新元素和API提升網頁內容和設計。 1)H5增強了語義化標記和多媒體支持。 2)它引入了Canvas和SVG,豐富了網頁設計。 3)H5的工作原理是通過新標籤和API擴展HTML功能。 4)基本用法包括使用創建圖形,高級用法涉及WebStorageAPI。 5)開發者需注意瀏覽器兼容性和性能優化。

H5帶來了多項新功能和能力,極大提升了網頁的互動性和開發效率。 1.語義化標籤如、增強了SEO。 2.多媒體支持通過和標籤簡化了音視頻播放。 3.Canvas繪圖提供了動態圖形繪製工具。 4.本地存儲通過localStorage和sessionStorage簡化了數據存儲。 5.地理位置API便於開發基於位置的服務。

HTML5帶來了五個關鍵改進:1.語義化標籤提升了代碼清晰度和SEO效果;2.多媒體支持簡化了視頻和音頻嵌入;3.表單增強簡化了驗證;4.離線與本地存儲提高了用戶體驗;5.畫布與圖形功能增強了網頁的可視化效果。

HTML5的核心特性包括語義化標籤、多媒體支持、離線存儲與本地存儲、表單增強。 1.語義化標籤如、等,提升代碼可讀性和SEO效果。 2.和標籤簡化多媒體嵌入。 3.離線存儲和本地存儲如ApplicationCache和LocalStorage,支持無網絡運行和數據存儲。 4.表單增強引入新輸入類型和驗證屬性,簡化處理和驗證。

H5提供了多種新特性和功能,極大地增強了前端開發的能力。 1.多媒體支持:通過和元素嵌入媒體,無需插件。 2.畫布(Canvas):使用元素動態渲染2D圖形和動畫。 3.本地存儲:通過localStorage和sessionStorage實現數據持久化存儲,提升用戶體驗。

H5和HTML5是不同的概念:HTML5是HTML的一個版本,包含新元素和API;H5是基於HTML5的移動應用開發框架。 HTML5通過瀏覽器解析和渲染代碼,H5應用則需要容器運行並通過JavaScript與原生代碼交互。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

禪工作室 13.0.1
強大的PHP整合開發環境

Atom編輯器mac版下載
最受歡迎的的開源編輯器

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器