# 客户端储存历程
  远古时期
  cookies的用法和缺陷
  userdata
 
HTML5时代
  localstorage
  application cache 离线缓存
  indexedeDB 客户端数据库
 
 
# HTML5储存具体介绍
  使用规范
  每种储存的特点以及解决的问题
    在大型站点中的使用
  具体业务适用的场景
 
 
# HTML5储存(大量案例)
如何实现把图片存在客户端?
如何实现跨域共享客户端缓存?
如何做到真正的离线访问web应用?
如何实现一个客户端的数据库?
待续
 
 
# 目录
H5之前如何实现储存
H5的几种常见的存储方式
localstorage && sessionstorage
application cache的介绍和使用
indexDB的介绍和使用
总结
 
 
# 关于储存
储存
cache
磁盘文件
数据库
内存
 
 
# H5之前
cookies诞生。。。
http请求头上会带着
大小4k
主Domain污染
cookies在浏览器储存形态
UserDate
1.只有IE支持(不符合w3c)
2.XML文件
 
 
# H5的储存
目标
解决4k的大小问题
解决请求头常带储存信息的问题
解决关系型储存的问题
跨浏览器
 
 
# H5的几种储存
几种储存形式
本地存储 ( localstorage && sessionstorage )
离线缓存 ( application cache )
IndexedDB 和 Web SQL
 
 
# H5本地储存
API
localstorage && sessionstorage
存储形式:
key --> value
过期
localstorage永久存储,永不失效,除非手动删除
sessionstorage如果:重新打开页面 或 关闭浏览器,就消失了
大小
官方给出的文档是,每个域名5M
 
 
使用方法
localstorage API介绍
getItem 取
setItem 设置
removeItem 移除
key 拿某一个索引
clear 全部删掉
 
 
都可以存什么东东
数组
json数据
图片
脚本
样式文件
 
 
使用注意事项:
1.使用前要判断浏览器是否支持
2.写数据时候,需要异常处理,避免超出容量抛错
3.避免把敏感的信息存入localstorage
4.key的唯一性
 
 
使用限制:
1.存储更新策略,过期控制
2.子域名之间不能共享储存数据
3.超出存储大小之后如何存储 ( LRU , FIFO 算法淘汰旧的数据)
4.server端如何取到
使用场景:
1.利用本地数据,减少网络传输
2.弱网络环境下,高延迟,低宽带,尽量把数据本地化
 
 
# Web SQL 和 IndexedDB
 
indexedDB database
一种能在浏览器中持久地存储结构化数据的 数据库, 并且为web应用提供了丰富的 查询 能力
 
浏览器
chrome 11+
opera 不支持
firefox 4+
IE 10+
eg:移动端支持的是web sql .不过w3c不再维护web sql
 
存储结构
IndexedDB是按域名分配独立空间,一个独立域名下可以创建多个数据库,每个数据库可以创建多个对象存储空间(表),一个对象存储空间可以存储多个对象数据
IndexedDB 
a.qq.com ->DB_A ->table_A1 ->object_record
->table_A2 ->object_record
b.qq.com ->DB_B 
 
 
# WebSql 和 IndexedDB
1.增,删,改
2.事务
3.游标
4.索引
 
 
 
# H5离线缓存
  什么离线缓存(offline application)
  它可以让Web应用在离线的情况下继续使用,通过manifest文件指明需要缓存的资源
 
  检测是否在线
  navigator.onLine
 
 
  原理

  

 
 
 
使用
创建manifest文件
CACHE MANIFEST
#version n.n
 
CACHE:
#需要缓存的文件
/css/sample.css
/images/image.jpg
 
NETWORK:
#每次重新拉取的文件
* (代表除了cache外从server拉取的文件)
FALLBACK:
# 离线状况下代替文件
/ offline.html
 
在HTML页面中引用manifest文件
<html manifest="sample.appcache">
 
在服务器添加mime-type text/cache-manifest
 
如何更新
如果有修改资源文件,必须通过修改manifest文件来刷新被缓存的文件列表
 
优势
1.完全离线
2.资源被缓存,加载更快
3.降低server负载
 
使用缺陷
1.含有manifest属性的当前请求页无论如何都会被缓存
2.更新需要简历在manifest文件的更新,文件更新后是需要页面再次刷新的(需要2次刷新才能获取新资源)
3.更新是全局性的,无法单独更新某个文件(无法单点更新)
4.对于链接的参数变化是敏感的,任何一个参数的修改都会被(master)重新缓存(重复缓存含参页面)index.html和index.htm?renew=1 会被认为是不同文件,分别缓存
 
试用场景
1.单地址的页面
2.对实时性要求不高的业务
3.离线webapp
 
# 还有哪些客户端存储
uerDate 
64k
只支持IE(5.0---9.0)
google Gears
64SQLite
chrome
12.0后放弃支持
用户授权
 
 
##### 总结 #####
H5存储优势
存储空间大
接口丰富
数据相对安全 (把数据存在客户端,没把数据跟URL带上)
关系型 (indexDB)
省流量
 
H5存储劣势
浏览器兼容
同源 (子域名不能共享)
脚本控制
更新策略

html5 说明的更多相关文章

  1. 使用HTML5开发Kinect体感游戏

    一.简介 我们要做的是怎样一款游戏? 在前不久成都TGC2016展会上,我们开发了一款<火影忍者手游>的体感游戏,主要模拟手游章节<九尾袭来 >,用户化身四代,与九尾进行对决, ...

  2. 读书笔记:《HTML5开发手册》--HTML5新的结构元素

    读书笔记:<HTML5开发手册> (HTML5 Developer's CookBook) 虽然从事前端开发已有很长一段时间,对HTML5标签也有使用,但在语义化上面理解还不够清晰.之前在 ...

  3. HTML5 Boilerplate - 让页面有个好的开始

    最近看到了HTML5 Boilerplate模版,系统的学习与了解了一下.在各种CSS库.JS框架层出不穷的今天,能看到这么好的HTML模版,感觉甚爽.写篇博客,推荐给大家使用.   一:HTML5 ...

  4. 戏说HTML5

    如果有非技术人员问你,HTML5是什么,你会怎么回答? 新的HTML规范... 给浏览器提供了牛逼能力,干以前不能干的事...(确切地说应该是给浏览器规定了许多新的接口标准,要求浏览器实现牛逼的功能. ...

  5. nw.js桌面软件开发系列 第0.1节 HTML5和桌面软件开发的碰撞

    第0.1节 HTML5和桌面软件开发的碰撞 当我们谈论桌面软件开发技术的时候,你会想到什么?如果不对技术本身进行更为深入的探讨,在我的世界里,有这么多技术概念可以被罗列出来(请原谅我本质上是一个Win ...

  6. Web大前端时代之:HTML5+CSS3入门系列

    准备来一波新技术,待续.... Old: 联系源码:https://github.com/dunitian/LoTHTML5 文档下载:https://github.com/dunitian/LoTD ...

  7. 07. Web大前端时代之:HTML5+CSS3入门系列~H5 地理位置

    Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 源码:https://github.com/duniti ...

  8. HTML5 介绍

    本篇主要介绍HTML5规范的内容和页面上的架构变动. 目录 1. HTML5介绍 1.1 介绍 1.2 内容 1.3 浏览器支持情况 2. 创建HTML5页面 2.1 <!DOCTYPE> ...

  9. HTML5 语义元素(一)页面结构

    本篇主要介绍HTML5增加的语义元素中关于页面结构方面的,包含: <article>.<aside>.<figure>.<figcaption>.< ...

  10. HTML5 input元素新的特性

    在HTML5中,<input>元素增加了许多新的属性.方法及控件.本文章分别对这三方面进行介绍. 目录 1. 属性 2. 方法 3. 新控件 1. 属性 <input>元素在H ...

随机推荐

  1. java 根据生日计算年龄 Java问题通用解决代码

    根据生日计算年龄可以通过Calendar实现.最简单可以考虑get(Calendar.DAY_OF_YEAR)来简单修正年龄,但是遇到生日在闰年的2月29之后,或者今年是闰年的2月29之后可能出现计算 ...

  2. mysql 随机取数据

    SELECT * FROM table WHERE id >= (SELECT FLOOR(RAND()*MAX(id)) FROM table ) ORDER BY idLIMIT 1; 这样 ...

  3. c#关于int(或其他类型)的字段在对象初始化时默认初始化问题的解决方法

    问题: c#的wcf服务接口在后台通过自定义对象接收前台参数的时候,前台参数即使不传int类型的字段值,后台也会默认初始化为0,由于很多表示状态的int字段都是从0开始的,导致查询的时候有些不想参与查 ...

  4. 第九节: 利用RemoteScheduler实现Sheduler的远程控制 第八节: Quartz.Net五大构件之SimpleThreadPool及其四种配置方案 第六节: 六类Calander处理六种不同的时间场景 第五节: Quartz.Net五大构件之Trigger的四大触发类 第三节: Quartz.Net五大构件之Scheduler(创建、封装、基本方法等)和Job(创建、关联

    第九节: 利用RemoteScheduler实现Sheduler的远程控制   一. RemoteScheduler远程控制 1. 背景: 在A服务器上部署了一个Scheduler,我们想在B服务器上 ...

  5. 零基础学python-1.5 第一个程序

    这一个章节我们来说说怎么建立一个python程序 1.打开idle 2.点击File->new file,然后会弹出一个编辑窗体 3.在编辑窗体里面输入命令代码 程序代码: print(&quo ...

  6. 如何提高Linux下块设备IO的整体性能?

    编辑手记:本文主要讲解Linux IO调度层的三种模式:cfp.deadline和noop,并给出各自的优化和适用场景建议. 作者简介: 邹立巍 Linux系统技术专家.目前在腾讯SNG社交网络运营部 ...

  7. linux 改动时间和日期date

    查看日期和时间 date 改动日期 date -s 月/日/年 date -s 08/15/2015 改动时间 date -s 09:29:33 写入CMOS sudo clock -w 利用ssh同 ...

  8. hdu 5881 Tea (2016 acm 青岛网络赛)

    原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=5881 Tea Time Limit: 3000/1000 MS (Java/Others)    Me ...

  9. IOS ARC内存管理,提高效率避免内存泄露

    本文转载至 http://blog.csdn.net/allison162004/article/details/38756263 Cocoa内存管理机制 (1)当你使用new.alloc.copy方 ...

  10. css 坑记

    1. div 内容超出 (做换行处理)   要注意 white-space属性的运用 设置 div width:100%;(或者固定值) 设置换行  word-break: break-all; 设置 ...