为了提升Web应用的用户体验,我们在做网站或者webapp的时候,经常需要保存一些内容到本地。例如,用户登录token,或者一些不经常变动的数据。

随着HTML5的到来,出现了诸如AppCache、localStorage、sessionStorage和IndexedDB等等的技术。

他们有各自适应的场景。我这里主要介绍一下localStorage,以及sessionStorage。

localStorage和sessionStorage都是以一个键值对的方式来保存值,最大容量是5M。(5M对于我们来说,缓存一下少量的数据还是够用的了)

localStorage和sessionStorage都提供了简单的增删改查api方便我们存储,getItem,setItem,clear...,等。

localStorage和sessionStorage都是以字符串的形式保存起来

localStorage和sessionStorage的区别主要在于生命周期的不同。localStorage是永久性的,而sessionStorage则会在session结束的时候被清空

在我们的实际应用中,经常会碰到这样的需求:

  • 保存对象
  • 保存确定过期时间的值
  • 更新对象
  • 获取当前保存内容的大小
  • 判断当前是否已经存在该key

这样的需求,通过系统提供的api,实现起来虽不算复杂,但总有点繁琐!

以下是我的解决办法:

  • 保存对象
    set的时候,判断是否为对象,如果是,则自动调用JSON.strigfy(data),将其转为字符串再保存。
    get的时候,如果是对象,则将data用JSON.parse转换成对象,再返回出去,
  • 保存有过期时间的值
    set的时候,如果有过期时间,则自动保存过期时间。
    get的时候,则判断是否过期,过期则返回null
  • 更新对象
    无需调用get获取数据,修改之后,在set回去。
    通过封装一个update的方法来解决
  • 判断当前是否已经存在该key
    通过遍历离线存储中所有的key,来判断是否存在

以上这些场景都是平时比较多到的,所以将其封装起来。减少代码的冗余!后期也能更好的维护!

如果赞同我所说的,请点一下下方的推荐。如果有其他问题,请多多指教~

这是这个库的gitHub地址:https://github.com/chen4342024/StoreLib/blob/master/README.md,欢迎star和fork

html5离线存储的更多相关文章

  1. 吓哭原生App的HTML5离线存储技术,却出乎意料的容易!【低调转载】

    吓哭原生App的HTML5离线存储技术,却出乎意料的容易![WeX5低调转载] 2015-11-16 lakb248 起步软件 近几天,WeX5小编编跟部分移动应用从业人士聊了聊,很多已经准备好全面拥 ...

  2. html5 离线存储

    在html页面中引入manifest文件 <html manifest="sample.appcache"> 在服务器添加mime-type text/cache-ma ...

  3. HTML5离线存储原理

    找到一篇介绍离线缓存的,感觉比之前看到的解释的更透彻,新的知识点记录如下: 大家都知道Web App是通过浏览器来访问的,所以离线状态下是无法使用app的.其中web app中的一些资源并不经常改变, ...

  4. html5 离线存储 worker

    html5 离线存储 <!DOCTYPE html> <html manifest="cache.manifest"> <!--manifest存储- ...

  5. 神奇的HTML5离线存储(应用程序缓存)

    声明:本文为原创文章,如需转载,请注明来源并保留原文链接前端小尚,谢谢! 前言 使用 HTML5,通过创建 cache manifest 文件,可以轻松地创建 web 应用的离线版本. HTML5引入 ...

  6. 【html5】html5离线存储

    html5本地存储之离线存储 1.为什么使用离线存储 ①最新的主流的浏览器中都已添加了对HTML5的offline storage功能的支持,HTML5离线存储功能非常强大, 它的作用是:在用户没有与 ...

  7. 利用Node实现HTML5离线存储

    前言 支持离线Web应用开发是HTML5的一个重点.离线Web应用就是在设备不能上网的时候仍然可以运行的应用.开发离线Web应用需要几个步骤,其中一个就是离线下必须能访问一定的资源(图像 JS css ...

  8. HTML5离线存储的工作原理和使用

    在用户没有与因特网连接时,可以正常访问站点或应用,在用户与因特网连接时,更新用户机器上的缓存文件. 原理:HTML5的离线存储是基于一个新建的.appcache文件的缓存机制(不是存储技术),通过这个 ...

  9. HTML5离线存储和本地缓存

    一.离线存储 有一个web应用有三个文件index.html,a.js,b.css,现在需要把js和css文件缓存起来 1.在index.html里加上<html manifest=" ...

随机推荐

  1. Nginx 403 forbidden的解决办法

    Nginx 403 forbidden的解决办法. 常见的,引起nginx 403 forbidden有二种原因,一是缺少索引文件,二权限问题. 1.缺少index.html或者index.php文件 ...

  2. js方法和原型继承(一)

    在js语言规范中并不存在方法这一概念,方便起见,将作为对象属性的函数成为方法this引用的规则a.在最外层代码中,this引用的是全局对象b.在函数内,this引用根据函数调用方式不同而不同函数内部的 ...

  3. apache2反向代理node.js应用

    在之前记录的随笔中,只是介绍了怎么在apache2中使用proxy模块,后来查到了一些资料,可以通过下面网址查看配置块的详细参数信息 http://man.ddvip.com/soft/apache2 ...

  4. PopupWindow的简单使用

    测试代码: package com.zzw.testpopuwindows; import android.app.Activity; import android.graphics.Color; i ...

  5. spring mvc中的文件上传

    使用commons-fileupload上传文件所需要的架包有:commons-fileupload 和common-io两个架包支持,可以到Apache官网下砸. 在配置文件spring-mvc.x ...

  6. 记录C++学习历程

    从今天开始学习C++,将学习中遇到的问题,以及解决方案记录在这个博客里. 函数 1.C++函数声明(原型) 函数原型跟函数的定义在返回值类型,函数名,参数上必须完全一致. 2.程序的内存区域:全局数据 ...

  7. 实战MySQL集群,试用CentOS 6下的MariaDB-Galera集成版

    说起mysql的集群估计很多人会首先想起mysql自带的replication或者mysql-mmm.mysql-mmm其实也是基于mysql自带的replication的,不过封装的更好用一些,但是 ...

  8. 菜鸟学习Spring——60s让你学会动态代理原理

    一.为什么要使用动态代理         当一个对象或多个对象实现了N中方法的时候,由于业务需求需要把这个对象和多个对象的N个方法加入一个共同的方法,比如把所有对象的所有方法加入事务这个时候有三种方法 ...

  9. android----Java DES加密算法工具类

    DESUtil类 public class DESUtil { private static byte[] iv = {0x12, 0x34, 0x56, 0x78, (byte) 0x90, (by ...

  10. random_names随机名字生成

    // 先从txt文件中获取姓和名数组 - (void)getNames{ NSString *resourcePath1 = [[NSBundle mainBundle] pathForResourc ...