23. 离线应用与客户端存储
离线应用要与传统客户端应用同场竞技
- 首先,要能确定设备能否上网,以便下一步执行正确的操作
 - 然后,应用还必须能访问一定的资源(图像、JavaScript、CSS等)
 - 最后,要有本地存储空间,无论是否上网都不妨碍读写
 
23.1 离线检测
- 属性    
navigator.onLine
 - 事件    
onlineoffline
 
23.2 应用缓存application cache
  - 描述文件
manifest file 
CACHE MANIFEST
#Comment
file.js
file.css
  - 引用 
<html manifest="/offline.manifest"> applicationCache对象status0无缓存1闲置2检查中3下载中…- 事件 
checking/error/noupdate/downloading/progress/updateready/cached 
23.3 数据存储
某个特定用户的信息应该存储在该用户的机器上。(登录信息、偏好设定)
- Cookie 在客户端存储会话信息
 
服务器响应头:
HTTP/1.1 200 OK
Content-type: text/html
Set-Cookie: name=value
Other-header: other-header-value
浏览器为每个请求添加Cookie HTTP头将信息发送回服务器:
GET /index.html HTTP/1.1
Cookie: name=value
Other-header: other-header-value
  - cookie 限制    
- cookie在性质上是绑定在特定的域名下的。
 - 当设定一个cookie后,再给创建他的域名发送请求时,都会包含这个cookie。
 - 这个限制确保了存储在cookie的信息只能让批准的接受者访问。
 - 删除策略
LRUleast recently used 最近最少使用 
 - cookie 构成    
- 名称 
Name - 值 
Value字符串 - 域 
Domain - 路径 
Path - 失效时间 
Expires / Max-Age - 安全标志 
Secure使用SSL连接时才发送 
 - 名称 
 
域、路径、失效时间、secure标志都是服务器传递给浏览器的指示,以指定如何发送cookie。这些参数并不会作为发送到服务器的信息的一部分,只有名值对儿才会被发送。
Response Headers:
 
 Request Headers:
 
- JavaScript中使用Cookie
 
document.cookie; // 读
document.cookie = "name=value"; // 写
document.cookie = encodeURIComponent("name") + "="
	+ encodeURIComponent("value") + "; domain=www.github.com; path=/";
  - 子Cookie 
subcookie- 为了绕开浏览器对cookie数的限制,
name=name1=value1&name2=value2 
 - 为了绕开浏览器对cookie数的限制,
 - cookie性能    
- 所有的cookie都会由浏览器作为请求头发送,所以cookie中存储大量信息会影响到特定域的请求性能。
 
 
当数据需要被严格控制在客户端上时,无需持续地将数据发回服务器。WebStorage的两个目标:
- 提供一种cookie之外的存储会话数据的途径
 - 提供一种存储大量可以跨会话存在的数据机制
 
- WebStorage    
- 通用方法和属性      
clear()getItem(name)key(index)setItem(name, value)removeItem(name)length
 sessionStorage会话- IE的事务形式方法,begin,commit
 
- globalStorage 已废弃
 localStorage- 持久保存客户端数据
 - 数据保留到通过JavaScript清除或者用户自己清除浏览器缓存
 
storage事件indexedDB在浏览器中保存结构化数据的一种数据库event.target.resultsetVersion()onerror/onsuccesstransaction()事务- 游标查询
openCursor() - 键范围
key range - 索引
createIndex() 
 - 通用方法和属性      
 - 限制    
- 同源(协议,域名,端口) -> 不能跨域共享
 
 

京公网安备 11010502036488号