网页中的数据存储

网页中的数据存储

在很多的时候,网页也需要临时去存储数据的。

现在总结几个网页中存数据的通用方案。

url 数据

可以在 url 的参数中带有数据。

<script>
  window.location.href = 'www.thl.com/a?myval=1&mmyval2'
</script>

这种方案特点:

  1. 数据量很小,受浏览器限制
  2. 可以跨域(利用 image, 或者 script)
  3. 单次请求

js 全局变量

在页面返回中放置一个全局变量,把后端的数据渲染在这个变量上。形式如下:

<script>
  var data = {{data}}
</script>

data 就是一个字面常量,然后对这个数据进行操作。

这种方案的特点是:

  1. 只能在一个页面中调用,多个页面不行
  2. 可以在 iframe 中可以读取父页面的全局变量
  3. 关闭网页则变量消失

dom element data 的方法

这里的思路是变量与 html 元素绑定在一起。形式如下:

<ul>
  <li onclick="show" id="owl" data-animal-type="bird">喜鹊</li>
</ul>

<script>
  // 第一种方法,原生 dom

  function show(this) {
    // 获得
    this.getAttribute('data-animal-type')

    // 更新
    this.setAttribute("data-animal-type", 20)

    // 删除
    this.removeAttribute("data-animal-type")
  }

  // 第二种, 原生 js 方法,

  var owl = document.getElementById('owl')[0]

  // 获得
  var myval = owl.dataset.animalType

  // 更新
  owl.dataset.manimalTypeyval = 20

  // 删除
  owl.dataset.animalType = null

  // 第三种方法,jquery

  // 获得
  $('#owl').data('animal-type')

  // 更新
  $('#owl').data('animal-type', 20)

  // 置空
  $('#owl').data('animal-type', null)

<script>

需要注意的是:

  1. 第二种方法,如果都是字母,则大写变成小写不变,而有- 则会把后面的字母变成大写,如 animal-type => animalType, a-B => aB, a-b => ab
  2. 第三种,jquery 也会像第二种方法这么做

这种方案的特点是:

  1. 可以和特定 dom element 绑定,在操作 dom 时,就很方便
  2. 不太自由,不能存太复杂的数据,虽然并没说,能放多少数据
  3. 关闭页面就消失

是把数据存放在 cookie 中。操作就是 cookie 的 js 的原生操作。

<script>
  document.cookie = "a=b;"
</script>

这种方案的特点是:

  1. cookie 大小有限
  2. 每次都会把 cookie 传到后端,费流量
  3. 同站点,多个页面可以共享
  4. 生存周期要看 cookie 的设置时间
  5. Cookie的作用是与服务器进行交互,作为HTTP规范的一部分而存在

sessionStorage

针对对话级的存储方案,这是 session 级。

<script>
  function() {
    window.sessionStorage.setItem('myval', '1')
    window.sessionStorage.getItem('myval')
  }
</script>

这种方案的特点是:

  1. 仅仅是为了在本地“存储”数据而生
  2. 数据量大

localStorage

localStorage 用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。

<script>
  function() {
    window.localStorage.setItem('myval', '1')
    window.localStorage.getItem('myval')
  }
</script>

这种方案的特点是:

  1. 数据量大
  2. 不会过期

indexeddb

webSQL 已经挂了,不能使用。

indexeddb 有更丰富的功能,包括事特等

<script>
  var DBOpenRequest = window.indexedDB.open('project', 1);
</script>

这篇文章可能更能说明

后端接口

后端接口,能把数据都放在一个数据库中,供下次调用。

总结

类型url 传参js 全局变量data 属性cookiesessionStoreagelocalStorageindexddb后端接口
目的页面交互页面交互页面交互http 协议交互本地存储本地存储本地存储服务器存储
数据大小url 长度小量最小量较小500万字符500万字符50MB无限
请求协带带上不带不带不带不带不带ajax 请求,带
页面共享可以 可以不行可以可以可以可以可以
跨域可以不行不行不行不行不行不行可以
生存周期单次单次单次视设置时间而定会话时间永久永久永久
适用场景小数量,单次请求后端渲染后端渲染小数据量与后端交互本地会话级本地永久本地永久服务器

要根据自己的项目选择合适的存储方案。

转载于:https://www.cnblogs.com/htoooth/p/9134703.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值