localstorage 本地存储
存储 本地 localStorage
2023-09-11 14:17:33 时间
decode = function(s) {
// 参考jquery cookie的实现: https://github.com/carhartl/jquery-cookie/blob/master/jquery.cookie.js
if (s.indexOf(") === 0) {
s = s.slice(1, - 1).replace(/\\"/g, ").replace(/\\\\/g, \\);
try {
return decodeURIComponent(s);
} catch (e) {
return null;
encode = encodeURIComponent,
isSupportLocalStorage = (function() {
try {
var support = localStorage in win win[localStorage] !== null,
test = {
k: test key,
v: test value
if (support) {
localStorage.setItem(test.k, test.v);
support = test.v === localStorage.getItem(test.k);
return support;
} catch (e) {
return false;
}()),
stringify = function(v) {
if (!_.isString(v)) {
v = JSON.stringify(v);
return encode(v);
validateCookieName = function(name) {
if (!_.isString(name) || name === ) {
throw new TypeError(Cookie name must be a non-empty string!);
// TODO: 不支持localStorage时换用cookie存储
// 现在在某些浏览器下可能存在cookie数量的限制
// 之后可能的优化是使用subcookie的方式: https://developer.yahoo.com/yui/cookie/#subcookies
s = isSupportLocalStorage ? localStorage : {
setItem: function(k, v, days) {
validateCookieName(k);
// 默认cookie中的结果缓存7天
days = days || 7;
var expires = new Date();
expires.setDate(expires.getDate() + days);
v = _m.utils.evaluate(v);
if (_.isArray(v)) {
v = v[0];
expires = new Date(parseInt(v[1], 10));
k = stringify(k);
v = stringify(v);
// 高端浏览器中一般合并字符用+比用join()更高效
// 参考: http://photo.weibo.com/2785671884/wbphotos/large/photo_id/3453950944633013?refer=weibofeedv5
doc.cookie = k + = + v + ; expires= + expires.toGMTString();
getItem: function(k) {
validateCookieName(k);
k = stringify(k) + =;
var v = null,
cookie = doc.cookie,
start = cookie.indexOf(k);
if (start -1) {
var end = cookie.indexOf(;, start);
if (end === -1) {
end = cookie.length;
v = decode(cookie.substring(start + k.length, end));
return v;
removeItem: function(k) {
this.setItem(k, , - 1);
prefix = _BM:;
return {
isSupportLocalStorage: isSupportLocalStorage,
set: function(k, v, expires) {
if (_.isNumber(expires)) {
expires = +new Date() + expires;
s.setItem(prefix + k, JSON.stringify({
value: v,
expires: expires
}));
get: function(k) {
var v = JSON.parse(s.getItem(prefix + k)),
expires;
if (!v) {
return;
expires = parseInt(v.expires, 10);
v = v.value;
if (expires) {
if (+new Date() expires) {
return v;
this.remove(k);
return v;
remove: function(k, v) {
if (v) {
try {
this.set(k, _.difference(this.get(k), v));
} catch (e) {}
} else {
s.removeItem(prefix + k);
add: function(k, v, options) {
var h = this.get(k),
defaults = {
type: set,
limit: 10
opts = _.extend(defaults, options),
type = opts.type,
expires = opts.expires,
limit = opts.limit;
// TODO: 有潜在的bug, 比如之前存储的是array类型
if (!_.isArray(h)) {
h = _.isUndefined(h) [] || [h];
if (type === set _.indexOf(h, v) !== -1) {
return;
if (_.isNumber(limit) limit 0) {
h = _.first(h, limit - 1);
h.unshift(v);
this.set(k, h, expires);
原生JavaScript实现本地存储(localStorage)和会话存储(sessionStorage) 本地存储和会话存储的目的,是将所输入的文件存入到浏览器中,在需要的时候,直接调用,但是本地存储和会话存储有着一定的区别,本地存储,在不主动删除的情况下,会一直保留在浏览器中,会话存储是,当前保存的内容,页面刷新还会保留在浏览器中,但是关闭页面在打开时,会发现没有数据了。这是他们两的用处和区别。
localStorage灵魂五问。 5M?? 10M !!! localStorage 存储的键和值始终采用 UTF-16 DOMString 格式,每个字符使用两个字节。与对象一样,整数键将自动转换为字符串。
解决浏览器存储问题,不得不了解的cookie,localStorage和sessionStorage 要说浏览器存储的方式,我们听到最多的莫过于就是 cookie , localStorage 和 sessionStorage 了。那这三者之前有什么区别, cookie 与 session 、 sessionId 又有什么关系呢?接下来我们一起来了解一下吧!
原生JavaScript实现本地存储(localStorage)和会话存储(sessionStorage) 本地存储和会话存储的目的,是将所输入的文件存入到浏览器中,在需要的时候,直接调用,但是本地存储和会话存储有着一定的区别,本地存储,在不主动删除的情况下,会一直保留在浏览器中,会话存储是,当前保存的内容,页面刷新还会保留在浏览器中,但是关闭页面在打开时,会发现没有数据了。这是他们两的用处和区别。
localStorage灵魂五问。 5M?? 10M !!! localStorage 存储的键和值始终采用 UTF-16 DOMString 格式,每个字符使用两个字节。与对象一样,整数键将自动转换为字符串。
解决浏览器存储问题,不得不了解的cookie,localStorage和sessionStorage 要说浏览器存储的方式,我们听到最多的莫过于就是 cookie , localStorage 和 sessionStorage 了。那这三者之前有什么区别, cookie 与 session 、 sessionId 又有什么关系呢?接下来我们一起来了解一下吧!
相关文章
- H5本地存储:sessionStorage和localStorage
- Java实现蓝桥杯模拟存储转换
- Java线程本地存储ThreadLocal
- html5 本地存储
- Android实训案例(三)——实现时间轴效果的ListView,加入本地存储,实现恋爱日记的效果!
- Android数据存储
- 云计算存储会拖累大数据分析
- html5 本地存储
- 数据库 插入更新表内容的存储过程
- 本地安装 SAP WebIDE 的本地存储研究
- SAP ABAP Development Tool 的本地存储原理(local storage)
- Atitit 持久化与数据存储标准化规范 目录 1. 存储的附加功能2 1.1. 基本存取功能2 1.2. 全文检索(imap2 1.3. 属性检索2 1.4. 查询语言2 2. 基于内容
- Atitit 存储方法大总结 目录 1. 存储方式分类2 1.1. 按照数据分类为 结构化 半结构化 非结构化2 1.2. 按照内外部可分类 内部存储和外部存储持久化2 1.3. 按照本地远
- SAP ABAP OData gateway缓存表的存储逻辑 - cache table logic
- web本地存储localStorage
- ios swift5 Codable 本地存储(存取) 字典转模型
- 原生js本地存储、获取、删除、清空
- 纯Vue实现网页日常任务清单小功能(数据存储在浏览器)
- HTML5 学习总结(三)——本地存储(localStorage、sessionStorage、WebSqlDataBase、IndexedDB)
- 字段、约束和索引在存储过程中的判断
- mysql创建 存储过程 并通过java程序调用该存储过程
- 第34讲:MySQL中常用的几种存储引擎以及如何选择
- 使用Apache Arrow助力PySpark数据处理——本质上是在内存中按照列式存储组织数据格式,以提升性能
- Elasticsearch压缩索引——lucene倒排索引本质是列存储+使用嵌套文档可以大幅度提高压缩率
- MySQL 存储过程与函数
- vue本地存储、获取自定义data-id、获取链接url参数、页面跳转返回、修改页面title
- 【区块链技术开发】智能合约与图像存储在外部存储器IPFS(InterPlanetary File System)
- Web前端性能优化_浏览器本地存储