HTML5 存储方式总结

2,479 阅读2分钟
原文链接: www.cnblogs.com


...
CACHE MANIFEST
# v1.0.0
/theme.css
/main.js
 NETWORK:
login.jsp
 FALLBACK:
/html/ /offline.html

①CACHE MANIFEST - 在此标题下列出的文件将在首次下载后进行缓存

②NETWORK - 在此标题下列出的文件需要与服务器的连接,且不会被缓存

③FALLBACK - 在此标题下列出的文件规定当页面无法访问时的回退页面(比如 404 页面)

服务器需为manifest文件配置正确的MIME-type,即 "text/cache-manifest"

关系数据库,通过SQL语句访问,Web SQL 数据库 API 并不是 HTML5 规范的一部分,是一个独立的规范,引入了一组使用 SQL 操作客户端数据库的 APIs

openDatabase:这个方法使用现有的数据库或者新建的数据库创建一个数据库对象。

transaction:这个方法让我们能够控制一个事务,以及基于这种情况执行提交或者回滚。

executeSql:这个方法用于执行实际的 SQL 查询。

使用示例:




   
	
      
		
         var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
         var msg;
			
         db.transaction(function (tx) {
            tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
            tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "test web sql")');
            tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "www.36nu.com")');
            msg = '

数据表已创建,且插入了两条数据。

';             document.querySelector('#status').innerHTML =  msg;          });          db.transaction(function (tx) {             tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {                var len = results.rows.length, i;                msg = "

查询记录条数: " + len + "

";                document.querySelector('#status').innerHTML +=  msg;                for (i = 0; i < len; i++){                   msg = "

" + results.rows.item(i).log + "

";                   document.querySelector('#status').innerHTML +=  msg;                }             }, null);          });                      状态信息
   

5. IndexedDB

IndexedDB(作为 HTML5 的一部分)对创建具有丰富本地存储数据的数据密集型的离线 HTML5 Web 应用程序很有用。同时它还有助于本地缓存数据,使传统在线 Web 应用程序能够更快地运行和响应。

indexedDB中没有表的概念,而是objectStore,一个数据库中可以包含多个objectStore,objectStore是一个灵活的数据结构,可以存放多种类型数据。也就是说一个objectStore相当于一张表,里面存储的每条数据和一个键相关联。可以使用每条记录中的某个指定字段作为键值(keyPath),也可以使用自动生成的递增数字作为键值(keyGenerator),也可以不指定。选择键的类型不同,objectStore可以存储的数据结构也有差异。