html5存儲文件
A. html5 的「本地存儲」有什麼作用,是用在什麼地方的,還有。離線應用程序,都是用來做什麼的!啊啊啊!!
html5的本地存儲 就是一個輕量級的sqllite資料庫
離線應用 是ApplicationCache 用於在斷開網路連接的情況下 讀取本地緩存
瀏覽器緩存 不安全
本地緩存 可以指定緩存頁面 及文件
B. 介紹HTML5幾種存儲方式
HTML5 提供了兩種在客戶端存儲數據的新方法:..兩者都是僅在客戶端(即瀏覽器)中保存,不參與和伺服器的通信;
localStorage - 沒有時間限制的數據存儲,第二天、第二周或下一年之後,數據依然可用。
如何創建和訪問 localStorage:
<scripttype="text/javascript">
localStorage.lastname="Smith";
document.write(localStorage.lastname);
</script>
下面的例子對用戶訪問頁面的次數進行計數:
<scripttype="text/javascript">
if(localStorage.pagecount){
localStorage.pagecount=Number(localStorage.pagecount)+1;
}
else{
localStorage.pagecount=1;
}
document.write("Visits"+localStorage.pagecount+"time(s).");
</script>
sessionStorage - 針對一個 session 的數據存儲,當用戶關閉瀏覽器窗口後,數據會被刪除。
創建並訪問一個 sessionStorage:
<scripttype="text/javascript">
sessionStorage.lastname="Smith";
document.write(sessionStorage.lastname);
</script>
下面的例子對用戶在當前 session 中訪問頁面的次數進行計數:
<scripttype="text/javascript">
if(sessionStorage.pagecount){
sessionStorage.pagecount=Number(sessionStorage.pagecount)+1;
}
else{
sessionStorage.pagecount=1;
}
document.write("Visits"+sessionStorage.pagecount+"time(s)thissession.");
</script>
sessionStorage 、localStorage的區別
共同點:都是保存在瀏覽器端,且同源的。
區別:數據有效期不同,sessionStorage:僅在當前瀏覽器窗口關閉前有效,自然也就不可能持久保持;localStorage:始終有效,窗口或瀏覽器關閉也一直保存,因此用作持久數據;cookie只在設置的cookie過期時間之前一直有效,即使窗口或瀏覽器關閉。
作用域不同,sessionStorage不在不同的瀏覽器窗口中共享,即使是同一個頁面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。Web Storage 支持事件通知機制,可以將數據更新的通知發送給監聽者。Web Storage 的 api 介面使用更方便。
C. 如何設置html5本地存儲
web存儲最初作為HTML5的一部分被定義成API形式,但是後來被剝離出來作為獨立的標准了。
web存儲表轉所描述的API包含localStorage對象和SessionStorage對象,這兩個對象實際上是持久化關聯數組,是名值對的映射表,「名」和「值」都是字元串。
例子:
varname=localStorage.username;//查詢一個儲存的值
name=localStorage["username"];//等價於數組表示法
if(!name){
name=prompt("whatisyourname?");
localStorage.username=name;
}
//迭代所有存儲的name/value對
for(varnameinlocalStorage){
varvalue=localStorage[name];
}
D. html5離線存儲緩存列表可以動態生成嗎
html5離線存儲緩存列表可以動態生成
最簡單來說,一個離線網路應用程序就是一個URL的列表——HTML,CSS,JavaScript,圖片,或者其他類型的資源。離線網路應用程序的主要指向一個叫做名單文件並用於定位網路伺服器上的資源列表。用於執行HTML5離線以用程序的網路瀏覽器將從名單文件中讀取URL列表,下載這些資源,將他們在本地緩存,並自動在這些本地副本改變時保持他們更新。當你嘗試在沒有網路連接時訪問網路應用程序,你的網路瀏覽器將自動切換並使用本地代替。
最新的主流的瀏覽器中都已添加了對HTML5的offlineStorage功能的支持,HTML5離線存儲功能非常強大,它的作用是:在用戶沒有與網際網路連接時,照樣可以訪問站點或應用,在用戶與網際網路連接時,自動更新緩存數據,是我們的網站的適應性和應用型更強!
例如一些在線游戲的某些文件可以使用離線存儲緩存到本地,這樣就不用每次刷新頁面都要下載了。對於傳統的瀏覽器緩存是無法控制的,瀏覽器有自己的緩存規則,我們無法實現緩存什麼不緩存什麼。但是使用離線存儲可以緩存任何內容,包括可以自定義哪些可以被緩存,哪些必須聯網才能訪問。
離線存儲所保存的不是應用中的某些數據,而是站點的某個些文件的副本,即html頁面或圖片等,而不是僅僅存儲一段json或xml。
E. HTML5本地存儲機制是怎樣的
HTML5 是下一代 HTML 標准,開始吸引越來越多人的目光。HTML5 的 DOM Storage 機制提供了一種方式讓程序員能夠把信息存儲到本地的計算機上,在需要時獲取。這點和 cookie 相似,區別是 DOM Storage 提供了更大容量的存儲空間。
目前,在客戶端保存數據使用最多的是 cookie,但 cookie 的大小上限為 4KB,並且每次請求一個新頁面時 cookie 都會被發送過去。更多的存儲空間需要瀏覽器本身或是插件的支持,例如只在 Internet Explorer 上使用的 userData,需要額外安裝插件的 Google Gears 和 Flash。現在,HTML5 提供了一種標準的介面,使程序員可以簡單地訪問存儲的數據。由於鍵值對存儲在本地計算機上,在頁面載入完畢後可以通過 JavaScript 來操作這些數據。
HTML5 的建議是每個網站提供給 Storage 的空間是 5MB,一般來說足夠存字元串。如果存入的數據太大,有些瀏覽器如 Chrome 會拋出 QUOTA_EXCEEDED_ERR 異常。所以雖然 DOM Storage 提供的空間比 cookie 要大很多,但在使用需要注意限制。
安全性
一般不要在客戶端存儲敏感的信息,使用 localStorage、globalStorage 等在客戶端存儲的信息都非常容易暴露。應該在完成數據存儲後使用 clear 或者 removeItem 方法清除保存在 Storage 對象中的數據。
存儲事件驅動
如果想在存儲成功或修改存儲的值時執行一些操作,可以用 DOM Storage 介面提供的事件。
F. html5 本地存儲有多少種方案
html5 本地存儲有五種方案。
1、LocalStorage
LocalStorage就是Key-Value的簡單鍵值對存儲結構,Web Storage除了localStorage的持久性存儲外,還有針對本次回話的sessionStorage方式,一般情況下localStorage較為常用,示例代碼如下:
function save(dataModel){
var value = dataModel.serialize();
window.localStorage['DataModel'] = value;
window.localStorage['DataCount'] = dataModel.size();
console.log(dataModel.size() + ' datas are saved');
return value;
}
function restore(dataModel){
var value = window.localStorage['DataModel'];
if(value){
dataModel.deserialize(value);
console.log(window.localStorage['DataCount'] + ' datas are restored');
return value;
}
return '';
}
function clear(){
if(window.localStorage['DataModel']){
console.log(window.localStorage['DataCount'] + ' datas are cleared');
delete window.localStorage['DataModel'];
delete window.localStorage['DataCount'];
}
}
2、Cookie
這種存儲方式存儲內容很有限,只適合做簡單信息存儲,存取介面設計得極其反人類,舉例如下:
function getCookieValue(name) {
if (document.cookie.length > 0) {
var start = document.cookie.indexOf(name + "=");
if (start !== -1) {
start = start + name.length + 1;
var end = document.cookie.indexOf(";", start);
if (end === -1){
end = document.cookie.length;
}
return unescape(document.cookie.substring(start, end));
}
}
return '';
}
function save(dataModel) {
var value = dataModel.serialize();
document.cookie = 'DataModel=' + escape(value);
document.cookie = 'DataCount=' + dataModel.size();
console.log(dataModel.size() + ' datas are saved');
return value;
}
3、Indexed Database API
IndexedDB可以存儲結構對象,可構建key和index的索引方式查找,目前各瀏覽器的已經逐漸支持IndexedDB的存儲方式,其使用代碼如下,需注意IndexedDB的很多操作介面類似NodeJS的非同步回調方式,特別是查詢時連cursor的continue都是非同步再次回調onsuccess函數的操作方式,因此和NodeJS一樣使用上不如同步的代碼容易。
function save(dataModel){
var tx = db.transaction("meters", "readwrite");
var store = tx.objectStore("meters");
dataModel.each(function(data){
store.put({
id: data.getId(),
tag: data.getTag(),
name: data.getName(),
meterValue: data.a('meter.value'),
meterAngle: data.a('meter.angle'),
p3: data.p3(),
r3: data.r3(),
s3: data.s3()
});
});
tx.oncomplete = function() {
console.log(dataModel.size() + ' datas are saved');
};
return dataModel.serialize();
}
4、FileSystem API
FileSystem API相當於操作本地文件的存儲方式,目前支持瀏覽器不多,其介面標准也在發展制定變化中,因此也可以動態生成圖片到本地文件,然後通過 filesystem:http:*** 的URL方式直接賦值給img的html元素的src訪問。
function save(dataModel) {
var value = dataModel.serialize();
fs.root.getFile('meters.txt', {create: true}, function (fileEntry) {
console.log(fileEntry.toURL());
fileEntry.createWriter(function (fileWriter) {
fileWriter.onwriteend = function () {
console.log(dataModel.size() + ' datas are saved');
};
var blob = new Blob([value], {type: 'text/plain'});
fileWriter.write(blob);
});
});
return value;
}
5、Application Cache
window.applicationCache 對象是對瀏覽器的應用緩存的編程訪問方式。其 status 屬性可用於查看緩存的當前狀態:
var appCache = window.applicationCache;
switch (appCache.status) {
case appCache.UNCACHED: // UNCACHED == 0
return 'UNCACHED';
break;
case appCache.IDLE: // IDLE == 1
return 'IDLE';
break;
case appCache.CHECKING: // CHECKING == 2
return 'CHECKING';
break;
case appCache.DOWNLOADING: // DOWNLOADING == 3
return 'DOWNLOADING';
break;
case appCache.UPDATEREADY: // UPDATEREADY == 4
return 'UPDATEREADY';
break;
case appCache.OBSOLETE: // OBSOLETE == 5
return 'OBSOLETE';
break;
default:
return 'UKNOWN CACHE STATUS';
break;
};