博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浏览器数据持久化存储技术
阅读量:5737 次
发布时间:2019-06-18

本文共 2445 字,大约阅读时间需要 8 分钟。

第03天

HTTP文件缓存

  • 是基于HTTP协议的浏览器端文件级缓存机制
# HTML加meta
复制代码
# 服务端const static = require('koa-static')const app = koa()app.use(static('./pages', {    maxage:7200}))复制代码

localStorage

  • 是HTML5的本地缓存方案
  • 不同浏览器限制不尽相同
  • 大小限制指单个域名下的大小
  • 可用iframe方式使用多个域名突破最大限制
# 安全封装let rkey = /^[0-9A-Za-z_@-]*$/let storefunction init(){  if(typeof store === 'undefined') {     store = window['localStorage']  }  return true;}function isValidKey(key){	if (typeof key !== 'string') {		return false	}	return rkey.test(key)}exports = {	set(key, value){		let success = false		if (isValidKey(key) && init()) {			try {				value += ''				store.setItem(key, value)				success = true			} catch (e) {}		}		return success	},	get(key) {		if (isValidKey(key) && init()){			try{				return store.getItem(key)			} catch (e) {}		}		return null	},	remove(key){		if (isValidKey(key) && init()){			try{				return store.removeItem(key)				return true			} catch (e) {}		}		return false	},	clear(){		if (init()){			try{				for (let key in store) {					store.removeItem(key)				}				return true			} catch (e) {}		}		return false	}}module.exports = exports复制代码

sessionStorage

  • API和localStorage完全相同
  • 浏览器关闭时自动清空

Cookie

  • 网站为辨别用户身份,存储在浏览器端的数据
  • 通过HTTP请求发送到服务端
  • 键、值、域、过期时间和大小组成
  • 不通域名信息独立
# 设置多个子域中共享Cookiesthis.cookies.set('username', 'ouven', {   domain: '.domain.com',    path: '/'})复制代码
# 封装exports = {	get(n){		let m = document.cookie.match(new RegExp( "(^| )"+n+"=([^;]*)(;|$)" ))		return !m ? '' : decodeURIComponent(m[2])	},	set(name, value, domain, path, hour){		let expire = new Date()		expire.setTime(expire.getTime() + (hour ? 3600000 * hour : 30*24*60*60*1000))		document.cookie = name + '=' + value + ';' + 'expires=' + expire.toGMTString() + ';path=' + (path ? path : '/') + '; ' + (domain ? ('domain=' + domain' + ';') : '')	},	del (name, domain, path) {		document.cookie = name + '=; expires=Mon, 26 Jul 1997 05:00:00 GMT; path=' + (path ? path : '/') + '; ' + (domain ? ('domain=' + domain + ';') : '')	},	clear() {		let rs = document.cookie.match(new RegExp("([^;][^;]*)(?=(=[^;]*)(;|$))", 'gi'))		for (let i in rs) {			document.cookie = rs[i] + '=;expires=Mon, 26 Jul 1997 05:00:00 GMT; path=/;'		}	}}module.exports = exports复制代码

WebSQL

  • 存储较大量数据的缓存机制
  • 兼容性问题
  • 使用场景有限

IndexDB

  • 存储大量结构化数据
  • 能索引检索
  • 保存本地数据泄漏

Application Cache

  • 通过manifest配置文件,选择性存储静态资源的文件级缓存机制
  • 不成熟的本地缓存解决方案

cacheStorage

  • ServiceWorker规范中定义的
  • 未来肯定代替Applicatioin Cache的离线方案
  • ServiceWorker浏览器兼容性差, 不成熟

Flashe缓存

  • 读写浏览器端本地目录功能
  • 给js提供调用的API

关注微信订阅号,听音频

转载地址:http://iewzx.baihongyu.com/

你可能感兴趣的文章
android 读取json数据(遍历JSONObject和JSONArray)
查看>>
pyjamas build AJAX apps in Python (like Google did for Java)
查看>>
<JavaScript语言精粹>-读书笔记(一)
查看>>
NPM教程
查看>>
Java学习笔记(40)——Java集合12之fail-fast
查看>>
Centos 配置IP的方式
查看>>
Go 的吉祥物,萌不萌
查看>>
Java 的swing.GroupLayout布局管理器的使用方法和实例
查看>>
Android中Activity和Fragment的生命周期的对比
查看>>
C++Primer_笔记_异常处理
查看>>
分区交换 alter table exchange partition 在线表 历史表交换
查看>>
zabbix详解:(二)添加被监控机器
查看>>
设计模式单列
查看>>
人像模式的灯光效果?iPhone 8开挂袭来
查看>>
Linux下MongoDB安装与配置
查看>>
DSL配置(PPPOA)
查看>>
WEBRTC执行流程
查看>>
Spring Boot 入门系列
查看>>
Spring Cloud版——电影售票系统<六>使用 Spring Cloud Config 统一管理微服务配置
查看>>
Java not support java EE1.3
查看>>