当前位置:首页 > 数码 > 揭秘高效存储和增强用户体验之道-20k级别前端使用LocalStorage的秘密技巧 (常见存储高级技术的原理和实现)

揭秘高效存储和增强用户体验之道-20k级别前端使用LocalStorage的秘密技巧 (常见存储高级技术的原理和实现)

admin7个月前 (04-14)数码32

localStorage 和 sessionStorage 是两个在 Web 开发中广泛使用的 API,用于存储键值对。尽管它们使用起来非常方便,但也存在一些规范使用的问题。

规范使用问题

命名过于简单

localStorage 和 sessionStorage 中的键名通常比较简单,这可能会导致不同的项目或应用程序之间出现键名冲突。例如,如果两个项目都使用 "name" 键存储用户姓名,则其中一个项目的 "name" 值可能会被另一个项目覆盖。

缺乏时效性

localStorage 和 sessionStorage中的数据默认情况下是永久存储的。对于某些类型的缓存数据,设置一个特定的时效性非常重要。例如,如果存储一个登录令牌,那么令牌应在一定时间后过期,以提高安全性。

隐秘性差

localStorage 和 sessionStorage 中的数据很容易被用户访问和修改。这可能会在开发或生产环境中造成安全问题。

解决方案

命名规范

为了避免命名冲突,建议使用以下命名约定:项目名+当前环境+项目版本+缓存键名。例如,一个名为 "MyApp" 的项目的 "common" 缓存键名可以命名为 "MyApp_prod_v1_common"。

expire 定时

要为缓存数据设置时效性,可以采用以下策略:将缓存值包装为一个对象,包含一个 "expiredAt" 属性。每次获取缓存值时,检查 "expiredAt" 属性是否已过期。如果已过期,则删除缓存数据。

crypto 加密

为了提高数据的隐秘性,可以对缓存数据进行加密。可以使用 crypto-js 库来实现加密和解密操作。

实践

以下是一个用于规范 localStorage 使用的示例代码片段:

javascript
// 创建命名空间
const APP_NAMESPACE = 'MyApp_prod_v1';

// 设置缓存值,并设置 expire 时间
const setCacheValue = (key, value, expireInMs) => {
  const expireAt = new Date().getTime() + expireInMs;
  const cacheObj = {
    value,
    expiredAt: expireAt,
  };

  localStorage.setItem(`${APP_NAMESPACE}_${key}`, JSON.stringify(cacheObj));
};

// 获取缓存值,并检查是否过期
const getCacheValue = (key) => {
  const cacheObj = JSON.parse(localStorage.getItem(`${APP_NAMESPACE}_${key}`));

  if (!cacheObj) {
    return null;
  }

  if (cacheObj.expiredAt < new Date().getTime()) {
    localStorage.removeItem(`${APP_NAMESPACE}_${key}`);
    return null;
  }

  return cacheObj.value;
};
  

结语

规范使用 localStorage 和 sessionStorage 不仅可以提高代码的可维护性和可读性,还可以改善安全性。通过遵循上述最佳实践,开发人员可以构建更强大、更安全的 Web 应用程序。


html5几种在客户端存储数据的实例详解

LocalStorage LocalStorage用于持久化的本地存储,存储资料在客户端(client)的浏览器上,除非主动删除数据,否则数 据是永远不会过期的。 LocalStorage使用键值对的方式进行存储,存储的方式只能是字符串。 存储内容可以有图片、json、样式、脚本等只要可以序列化为字符串的。 2 . SessionStorageSessionStorage用于本地存储一个会话中 的数据,这些数据只有在同一个会话中的页面才能访问并且会话结束,例如关闭窗口后,,数据也会随之被销毁。 它是一种会话级别的存储。 SessionStorage的使用方法与localstorage的使用方法相似。 3. 离线缓存(application cache)HTML5引入了应用程序缓存器,可对web进行缓存,在没有网络形况下使用,通过创建cache manifest文件,创建应用缓存。

Spark中cache和persist的区别

常见存储高级技术的原理和实现

cache只有一个默认的缓存级别MEMORY_ONLY ,而persist可以根据情况设置其它的缓存级别。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: 前端

“揭秘高效存储和增强用户体验之道-20k级别前端使用LocalStorage的秘密技巧 (常见存储高级技术的原理和实现)” 的相关文章

民众偏好-GPT-前端之死-调查显示-64% (民众的偏见)

民众偏好-GPT-前端之死-调查显示-64% (民众的偏见)

引言 人工智能的迅速发展引发了业界对自动化软件开发的担忧,特别是当涉及到前端工程时,该领域在很大程度上依赖于手工编码。 近年来,多模态大语言模型(LLM)在理解和生成视觉和文本数据方...

前端的十个棘手问题-检验你的知识储备! (前端)

前端的十个棘手问题-检验你的知识储备! (前端)

JavaScript 的变量提升是一种现象,即使用 var 关键字声明的变量会在编译时提升到作用域的顶部。 这会导致以下行为: 变量在声明前可访问,但值为...

优雅的前端国际化实现指南-b-b (时尚的前端)

优雅的前端国际化实现指南-b-b (时尚的前端)

Internationalization (i18n) is the process of adapting software applications and content to differ...

前端请求到后端API的中间件流程解析 (前端请求到后端的详细过程)

前端请求到后端API的中间件流程解析 (前端请求到后端的详细过程)

在前端请求到后端 API 的典型流程中,请求经过一系列中间件的处理,以确保请求的顺利处理和安全性。以下是中间件的详细解析: 前端请求 用户在前端发起请求,包括请求的 URL、参数以及其...

不容错过的前端开发技术 (不容错过的前一句)

不容错过的前端开发技术 (不容错过的前一句)

作为一名软件开发人员,跟上最新的发展至关重要。对于前端开发而言,这一点尤为关键,因为它旨在为用户创造无缝且引人入胜的体验。以下是前端开发领域中一些最流行的技术,它们将在 2023年大受欢迎:...

前端常用设计模式初探 (前端常用设计模式有哪些)

前端常用设计模式初探 (前端常用设计模式有哪些)

设计模式是一组可重复使用的解决方案,用于解决软件设计中的常见问题。它们提供了将代码组织成可重用、灵活和易于维护的形式的蓝图。 常用原则 在了解设计模式之前,让我们先回顾一下一些重要的常...

十分钟搞定前端虚拟列表-用于处理超长列表的优化技术

十分钟搞定前端虚拟列表-用于处理超长列表的优化技术

在处理包含大量数据的列表时,前端性能往往是一个重要的考虑点。传统的滚动列表组件在处理大数据量时可能会非常卡顿,甚至导致页面崩溃。那么针对这个问题,虚拟列表的概念就出现了,随后又出现了各种各样的虚拟...