// 这是一个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 minutesCookies.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
<!DOCTYPE html><html lang="en">
<head>
<meta charset="utf-8">
<script>
navigator.serviceWorker.register("/service-worker.js").then(function(serviceWorker) { console.log("success!");
}); </script>
</head>
<body>
</body></html>在页面注册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"); //获取storevar 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){ //拿到存储的对象
}
}以上内容就是cookie和HTML5离线存储的分析,大家都了解了吗?
UU财经还为您提供以下相关内容希望对您有帮助:
研究HTML5的时候,不知道Web Storage和cookie有什么区别呢
1. 存储空间更大:能提供5MB的存储空间(不同浏览器的提供的空间不同),Cookie仅4KB 2. 存储内容不会发送到服务器:当设置了Cookie后,Cookie的内容会随着请求一并发送的服务器,这对于本地存储的数据是一种带宽浪费。而Web Storage中的数据则仅仅是存在本地,不会与服务器发生任何交互。3. 更多丰富易用的
本地存储与 Cookies 的区别
Cookies:由于 Cookies 存储的内容会保留在 HTTP 请求的 Header 中,并随着每次请求发送到服务器,因此它们适用于存储需要与服务器交互的数据。例如,服务器可以使用 Cookies 来识别用户的会话状态、跟踪用户的浏览行为等。综上所述,本地存储和 Cookies 在设计目的、存储方式、存储大小、有效期以及数据传输...
html5 的“本地存储”有什么作用,是用在什么地方的,还有。离线应用程序...
html5的本地存储 就是一个轻量级的sqllite数据库 离线应用 是ApplicationCache 用于在断开网络连接的情况下 读取本地缓存 浏览器缓存 不安全 本地缓存 可以指定缓存页面 及文件
简述html5本地存储的优点
在 HTML5 之前,应用程序数据只能存储在 cookie 中,包括每个服务器请求。本地存储则更安全,并且可在不影响网站性能的前提下将大量数据存储于本地。与 cookie 不同,存储要大得多(至少5MB),并且信息不会被传输到服务器。本地存储经由起源地(origin)(经由域和协议)。所有页面,从起源地,能...
html5 web storage和cookie的区别?
1、存储大小不同 webStorage存储大小有,可达5M或更大;cookie存储数据不能超过4K 2、数据有效期不同 webStorage始终有效,窗口或浏览器关闭也一直保存;cookie只有设置的cookie过期时间之前一直有效 3、事件通知机制 webStorage支持事件通知机制,而cookie则不支持 4、API接口 webStorage自带一些API接口,...
HTML5应用程序缓存Application Cache详解
Application Cache带来的三个优势是:① 离线浏览② 提升页面载入速度③ 降低服务器压力而且主要浏览器皆以支持Application Cache,就算不支持也不会对程序造成什么影响离线存储技术HTML5提出了两大离线存储技术:localstorage与Application Cache,两者各有应用场景;传统还有离线存储技术为Cookie。经过实践我们任务...
HTML5本地存储机制是怎样的?
HTML5 的建议是每个网站提供给 Storage 的空间是 5MB,一般来说足够存字符串。如果存入的数据太大,有些浏览器如 Chrome 会抛出 QUOTA_EXCEEDED_ERR 异常。所以虽然 DOM Storage 提供的空间比 cookie 要大很多,但在使用需要注意。安全性 一般不要在客户端存储敏感的信息,使用 localStorage、global...
什么是html5的是离线存储
Html5引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问。 应用程序缓存为应用带来三个优势:离线浏览 – 用户可在应用离线时使用它们 速度 – 已缓存资源加载得更快 减少服务器负载 – 浏览器将只从服务器下载更新过或更改过的资源。
HTML5本地存储之如果没有数据库究竟会怎样_html5教程技巧
前面说过,webstorage是对cookie的优化而来,HTML4中使用cookie在客户端存储用户数据,长期使用发现存在以下问题:大小在4kbcookie每次随HTTP事务一起发送,浪费带宽正确操作cookie很复杂(这个有待考虑)由于以上问题,HTML5提出WebStorage作为新的客户端本地保存技术。代码如下:Web Storage 技术在web上存储...
angular-local-storage和cookie的区别
1.cookie:存储在用户本地终端上的数据。有时也用cookies,指某些网站为了辨别用户身份,进行session跟踪而存储在本地终端上的数据,通常经过加密。一般应用最典型的案列就是判断注册用户是否已经登过该网站。2.HTML5 提供了两种在客户端存储数据的新方法:两者都是仅在客户端(即浏览器)中保存,不参与...
Copyright © 2019- uude.cn 版权所有
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务