HTML5-本地存储与cookies
一、H5的几种存储形式
1、本地存储(localstorage和sessionstorage)
存储形式:key-->value
过期策略:localstorage永久存储,不过期,除非手动删除,sessionstorage在重启浏览器、关闭页面或新开页面时失效
大小限制:每个域名5M
使用方法:(localstorage与sessionstorage操作相同)
getItem(读取)、setItem(设置)、removeItem(移除)、key(索引)、clear(清空)
存储内容:数组、json、图片、脚本、样式等可以序列化为字符串的内容
- //自定义localstorage的过期逻辑
- function set(key,val){
- var curTime=new Date().getTime();
- localStorage.setItem(key,JSON.stringify({data:val,time:curTime}))
- }
- function get(key,exp){
- var data=localStorage.getItem(key);
- var dataObj=JSON.parse(data);
- if(new Date().getTime()-dataObj.time>exp){
- console.log("已过期")
- }else{
- console.log("data="+dataObj.data)
- }
- }
使用场景:利用本地数据,减少网络传输,弱网高延迟低带宽,尽量数据本地化
2、离线存储(application cache)
3、IndexedDB和Web SQL
二、H5之前
1、cookies
优点:几乎所有浏览器都兼容;缺点:是每次请求头信息会带上;大小限制为4k;主Domain污染
它的属性包括如下
- value //键值对,如test=hello
- expires //绝对过期时间,如new Date(),所以浏览器都支持
- domain //限定域名,如www.abc.com
- path //限定路径,如/index
- max-age //相对失效时间,单位为秒;取代expires,冲突则以max-age为准(IE不支持)
- secure //协议,不需要指定,当HTTPS通信时自动打开
- HttpOnly//仅用于服务器发送,JS无法读取
- document.cookie='test=hello;expires='+new Date(2017,5,1)+';path=/index;domain=www.abc.com;max-age=60*60*24*365;'
- //设置固定过期时间的cookies
- function setCookie(name,value){
- var Days = 30;
- var exp = new Date();
- exp.setTime(exp.getTime() + Days*24*60*60*1000);
- document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
- }
- //设置自定义过期时间cookie
- function setCookie(name,value,time){
- var msec = getMsec(time); //获取毫秒
- var exp = new Date();
- exp.setTime(exp.getTime() + msec*1);
- document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
- }
- //将字符串时间转换为毫秒,1秒=1000毫秒
- function getMsec(DateStr){
- var timeNum=str.substring(0,str.length-1)*1; //时间数量
- var timeStr=str.substring(str.length-1,str.length); //时间单位前缀,如h表示小时
- if (timeStr=="s"){ //20s表示20秒
- return timeNum*1000;}
- else if (timeStr=="h"){ //12h表示12小时
- return timeNum*60*60*1000;}
- else if (timeStr=="d"){
- return timeNum*24*60*60*1000;} //30d表示30天
- }
- //读取cookies
- function getCookie(name){
- var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)"); //正则匹配
- if(arr=document.cookie.match(reg)){
- return unescape(arr[2]);
- }
- else{
- return null;
- }
- }
- //删除cookies
- function delCookie(name){
- var exp = new Date();
- exp.setTime(exp.getTime() - 1);
- var cval=getCookie(name);
- if(cval!=null){
- document.cookie= name + "="+cval+";expires="+exp.toGMTString();
- }
- }
2、UserData:(仅IE)
HTML5-本地存储与cookies的更多相关文章
- HTML5本地存储localStorage与sessionStorage
在最近的项目中用到了html5的本地存储,下面总结一下. 1.html5几种存储形式 本地存储(localStorage && sessionStorage) 离线缓存(applica ...
- HTML5 本地存储 LocalStorage
说到本地存储,这玩意真是历尽千辛万苦才走到HTML5这一步,之前的历史大概如下图所示: 最早的Cookies自然是大家都知道,问题主要就是太小,大概也就4KB的样子,而且IE6只支持每个域名20个co ...
- HTML5本地存储localStorage与sessionStorage详解
前言 在最近的项目中用到了html5的本地存储,下面总结一下. 1.html5几种存储形式 本地存储(localStorage && sessionStorage) 离线缓存(appl ...
- HTML5本地存储(Local Storage) 的前世今生
长久以来本地存储能力一直是桌面应用区别于Web应用的一个主要优势.对于桌面应用(或者原生应用),操作系统一般都提供了一个抽象层用来帮助应用程序保存其本地数据 例如(用户配置信息或者运行时状态等). 常 ...
- HTML5本地存储——Web SQL Database与indexedDB
虽然在HTML5 WebStorage介绍了html5本地存储的Local Storage和Session Storage,这两个是以键值对存储的解决方案,存储少量数据结构很有用,但是对于大量结构化数 ...
- HTML5本地存储——IndexedDB(一:基本使用)
在HTML5本地存储——Web SQL Database提到过Web SQL Database实际上已经被废弃,而HTML5的支持的本地存储实际上变成了 Web Storage(Local Stora ...
- HTML5本地存储——Web SQL Database
在HTML5 WebStorage介绍了html5本地存储的Local Storage和Session Storage,这两个是以键值对存储的解决方案,存储少量数据结构很有用,但是对于大量结构化数据就 ...
- HTML5本地存储——IndexedDB(二:索引)
在HTML5本地存储——IndexedDB(一:基本使用)中介绍了关于IndexedDB的基本使用方法,很不过瘾,这篇我们来看看indexedDB的杀器——索引. 熟悉数据库的同学都知道索引的一个好处 ...
- [转]HTML5本地存储——Web SQL Database
在HTML5 WebStorage介绍了html5本地存储的Local Storage和Session Storage,这两个是以键值对存储的解决方案,存储少量数据结构很有用,但是对于大量结构化数据就 ...
- HTML5 本地存储 localStorage、sessionStorage 的遍历、存储大小限制处理
HTML5 的本地存储 API 中的 localStorage 与 sessionStorage 在使用方法上是相同的,区别在于 sessionStorage 在关闭页面后即被清空,而 localSt ...
随机推荐
- [LeetCode] Same Tree 判断相同树
Given two binary trees, write a function to check if they are equal or not. Two binary trees are con ...
- docker 常用命令(*)
查找镜像 https://hub.docker.com/ search --> centos7 一般docker 会有一个基础镜像,中间件镜像,应用镜像,生成一个镜像 docker build ...
- redis配置文件详解
基于redis2.4版本的配置文件. # 注意单位问题:当需要设置内存大小的时候,可以使用类似1k.5GB.4M这样的常见格式:## 1k => 1000 bytes# 1kb => 10 ...
- python基础-生成随机字符串方法
python解释器示例 >>> import uuid >>> uuid.uuid1() UUID('ae6822e6-c976-11e6-82e0-0090f5f ...
- webBrowser1
HTMLDocument类的引用 using mshtml;
- Servlet中以HashMap存放临时变量,解决跳转新页面请求参数过多时浏览器地址栏超长
具体使用方法如下: 1.在跳转之前将需要的参数串encodeURIComponent后作为参数value,UUID作为key一起POST到Servlet保存到HashMap中: 2.在Servlet发 ...
- Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
使用android studio 时,编译成功但用build apk时却报错 环境: android studio 1.5, jdk1.7 错误:Error:Execution failed for ...
- iOS推送证书转pem文件
iOS推送证书转 .pem文件. 推送证书转pem文件openssl x509 -in apns_miaobozhibo.cer -inform der -out apns_miaobozhibo.p ...
- 红米3 SM71.1(android-7.1.1_r6)更新发布20161229年末增强版
一.写在前面 我只是个人爱好,本ROM未集成任何第三方推广软件,我只是喜欢把好的资源分享出来,若可以,我们一起学习,一起进步. 请不要问我怎么刷机! 请不要问我玩游戏卡不卡(有钱你就换好点的手机)! ...
- js 正则表达式 ( 1 )
https://regexper.com/ 量词: ?: 最多一次(0次或者1次) +:至少一次(大于等于1次) *:大于等于0次 {n}:n次 {n,m}:n次到m次之间,包括n,m {n,}:n次 ...