[js开源组件开发]localStorage-cache本地存储的缓存管理
localStorage-cache本地存储的缓存管理
距离上次的组件开发有近三个月的时间了,最近一直在做一些杂事,无法静下心来写写代码,也是在学习emberjs,在emberjs中有一个很重要的东西 -- localstorage_adapter,本地存储适配器,利用它可以很方便的把数据保存在本地的localStorage中,但我今天要讲的,并不是ember,也不是适配器,我是个比较念旧的人,所以我对cookie很情有独钟,当然,cookie也会有各种问题,于是我就来改造下localStorage吧,让它更好用。
在我的设想中,一个缓存是应该有过期时间的,也应该是能够更新的,具有这两个能力还不够,它应该具有更新遇到异常时继续引用旧缓存的能力,不然接口挂了,整个应用都报错或白屏真是难看(我们公司现在就是这样,为此我先丢脸下)。
DEMO请案例点击这里查看http://www.lovewebgames.com/jsmodule/localStorage-cache.html.
github托管源码:https://github.com/tianxiangbing/localStorage-cache
##使用方法
LocalStorageCache.add('key','value');
一般情况下是这样的添加的
##add :function(key,value,exp)
add有三个参数,key是键,value为值,exp是过期时间,可以是0(关闭时过期),int 秒为单位,date类型为具体到期日期
##get:function(key,promise)
返回promise, 如果cache已过期,当第二个参数promise存在时,promise的fail时会在返回过期时的值
function ajax(){
var dtd = $.Deferred();
$.get('index.html').done(function(){
dtd.resolve("hello world.");
LocalStorageCache.setExpired('key',$('#txt_expri').val())//重新设置过期时间
}).fail(function(){
dtd.reject();
});
return dtd ;
}
$("#btn_getupdate").click(function(){
LocalStorageCache.get('key',ajax).done(function(result){
alert(result)
}).fail(function(result){
alert(result+'fail')
});
});
##remove:function(key)
移除cache
##clear:function()
清空所有cache
##update:function(key,value,exp)
更新cache,如果不加exp参数,就只更新内容。
在这里值得注意的是,所有的get都返回的是一个promise,当fail请求时,会返回到get的fail中去,过期时也会fail到data,只有一种情况fail的是null,那就是没有缓存。
这个组件是个很小的东西,解决的问题也是很微小的问题,可能有更好的方案,希望大家可以提出来,虽然每次写的组件都很小,但积少成多,现在也基本上积累了一整套的js小组件了。
[js开源组件开发]localStorage-cache本地存储的缓存管理的更多相关文章
- 【2015上半年总结】js开源组件开发系列索引
js开源组件开发系列一索引 2015.8 by 田想兵 个人网站 从3月份进入新公司以来,时经五个月,我以平均每周1个小组件的速度,已经完成的js组件有22个之余了,已基本上全部用到实际项目中,这些小 ...
- [js开源组件开发]network异步请求ajax的扩展
network异步请求ajax的扩展 在日常的应用中,你可能直接调用$.ajax是会有些问题的,比如说用户的重复点击,比如说我只希望它成功提交一次后就不能再提交,比如说我希望有个正在提交的loadin ...
- [js开源组件开发]数字或金额千分位格式化组件
数字或金额千分位格式化组件 这次距离上一个组件<[js开源组件开发]table表格组件>时隔了一个月,由于最近的项目比较坑,刚挖完坑,所以来总结性提出来几个组件弥补这次的空缺,首先是金额和 ...
- [js开源组件开发]query组件,获取url参数和form表单json格式
query组件,获取url参数和form表单json格式 距离上次的组件[js开源组件开发]ajax分页组件一转眼过去了近二十天,或许我一周一组件的承诺有了质疑声,但其实我一直在做,只是没人看到……, ...
- [js开源组件开发]js手机端浮层控件,并有多种弹出小提示,兼容pc端浏览器
js dialog组件,包含alert和confirm的实现 本组件所有的资源均在github上可以查看源代码 GitHub 本dialog的组件的例子请在这里查看 demo dialog js di ...
- [js开源组件开发]ajax分页组件
ajax分页组件 我以平均每一周出一个开源的js组件为目标行动着,虽然每个组件并不是很庞大,它只完成某一个较小部分的工作,但相信,只要有付出,总会得到回报的.这个组件主要完成分页的工作. 这张图里显示 ...
- [js开源组件开发]图片放大镜
图片放大镜 一般情况下,手机由于屏幕太小,会有图片上看不清的问题,所以我就做了一个放大镜的js效果,支持pc和移动端.它的原理是利用的backgroundsize来实现的,所以你的浏览器首先要支持这个 ...
- [js开源组件开发]tip提示组件
tip提示组件 常见的应用场景中,总是难免会遇到提示信息,比如显示不完全时需要鼠标移上去显示title,比如验证时的错误提示,比如操作按钮的辅助说明等,所以我独立出来了一个小的js组件,tip提示组件 ...
- [js开源组件开发]loading加载效果
loading加载效果 由于程序和网络的原因,常常我们需要在交互的时候,给用户一个正在加载中的动画,于是,loading组件横空出世.不需要复杂的代码,也能完成大多数业务,这就是我做组件的原则. 效果 ...
随机推荐
- C++和java多态的区别
C++和java多态的区别 分类: Java2015-06-04 21:38 2人阅读 评论(0) 收藏 举报 转载自:http://www.cnblogs.com/plmnko/archive ...
- node.js + mongodb 做项目的详解(一)
想写博客很长时间了,因为一直身患懒癌,所以一直拖到了现在.markdown的语法也是刚刚学,试验一下效果好了不说了,直接上干货了.----------------------------------- ...
- jQuery邮箱自动补全代码
JScript 代码 复制 (function($){ $.fn.emailMatch= function(settings){ var defaultSettings = { emailTip: ...
- Javascript动画效果(四)
Javascript动画效果(四) 前面我们自己写了一个小小的关于js动画的插件,下面我们来使用之前的框架来完成我们想要的动画效果.我们经常在淘宝网中看到,鼠标经过某一图片时,该图片有从上滚出而又从下 ...
- 如何解读SQL Server日志(1/3)
SQL Server 的事务日志包含所有数据修改的操作记录.分析日志一般作为解决某些问题的最后手段,如查看某些意外的修改.理解和分析日志内容是件非常困难的事情,fn_dblog通常会输出非常多的数据, ...
- 选择排序---堆排序算法(Javascript版)
堆排序分为两个过程: 1.建堆. 堆实质上是完全二叉树,必须满足:树中任一非叶子结点的关键字均不大于(或不小于)其左右孩子(若存在)结点的关键字. 堆分为:大根堆和小根堆,升序排序采用大根堆,降序排序 ...
- IIS MIME类型大全
文件如果下载不了,可能是iis中的MIME设置问题.格式前面为后辍名,后面为对应的MIME型(例如:rar application/x-rar-compressed 表示.RAR对应的是applica ...
- 创建与使用Web API
今天做了一个练习,实现单独的Web API project.以前只是在ASP.NET MVC project内创建. 创建一个Web API project,可参考下面步骤: 点击OK之后,出现另外一 ...
- winform自定义日期控件,要求可以手动输入日期DatePicker
要求:文本框中能手动输入数字,向上箭头根据鼠标位置给年月日递增,向下箭头递减 一:页面加载时: private void FlatDatePicker_Load(object sender, Even ...
- javascript学习笔记2-typeof、Number类型、Boolean()
1.typeof操作符 对一个值使用typeof操作符可能返回下列某个字符串 "undefined"——这个值未定义 "boolean"——这个值是布尔值 &q ...