本地数据存储解决方案以及cookie的坑

本地数据存储解决方案以及cookie的坑

问题:

cookie过长导致页面打开失败

背景:

在公司的项目中有一个需求是打开多个工单即在同一个页面中打开了多个tab(iframe),但是需要在刷新时只刷新当前页面仍然保留着多个iframe,现在刷新有两种方式,第一种是键盘中按F5或者ctrl+F5或者ctrl+R,第二种是点击浏览器的左上角进行刷新,点击F5时可以通过监听键盘的F5点击事件进行阻止默认刷新达到只刷新当前iframe,但是当用户点击浏览器的刷新后必须请求后端重新加载页面,所以这时需要记录下当前打开的一些iframe的信息,包括href等。

解决点击F5只刷新本iframe:

代码如下:

//F5键 F5 和 ctrl R 只刷新当前iframe
document.onkeydown = function (e){
    e = e || window.event;
    if((e.ctrlKey && e.keyCode == 82) || e.keyCode == 116) {//F5 和 ctrl R 刷新,禁止
        var cur_href= window.location.href; //获取到当前iframe的href
        e.preventDefault();      //阻止默认刷新
        location.href=cur_href;  //刷新当前iframe
    }
}

解决点击浏览器刷新(大坑):

这时,点击浏览器的刷新后必然会想服务端重新请求地址获取信息,所以在前边打开多个iframe的过程中必须保留打开的iframe的href以及title等信息,这时坑就来了。

解决方案一: 把打开的iframe的信息保存在后端,每打开一个iframe就向后端发请求保存iframe的信息,打开多个就进行追加

优点:

  • 简单粗暴

缺点:

  • 每打开或者关闭一个iframe都得请求后端,存在效率等问题

解决方案二之cookie大坑: 不把打开的iframe信息保存在后端,保存在浏览器本地的cookie中

优点:

  • 简单粗暴
  • 数据在本地,不会与后端交互,效率高

缺点:

  • cookie是有大小限制的,每个域名下个数有限制,重要的是每个cookie的数据大小不能超过4kb(局限性最大的点)
  • cookie的有效时间设置,如果不设置失效时间就会一直保存在本地,关闭浏览器也会保存在硬盘中,不会自动销毁,最终导致数量可能过多
  • 安全性不高
  • 每次访问都要传送cookie给服务器,浪费带宽

当时做的时候就是没考虑到本项目中其他同事也用到了大量的cookie同时没考虑到用户打开大量iframe后导致该cookie值超过4kb的限制,最终导致cookie过长使得页面打开失败(吃一堑长一智)

解决方案三之localStorage: 把ifrmae的信息保存在localStorage中

优点:

  • 简单
  • 存储大小为5M,足够使用
  • 保存在本地,不会与后端交互

缺点:

  • 保存在localStorage中的数据数永久保留在本地,关闭会话(浏览器tab的关闭或关闭浏览器不会销毁)
  • 由于需求是用户关闭浏览器tab或者关闭浏览器之后就清除这些保存的iframe的信息,所以localStorage中的数据无法清理(原因:js无法监听浏览器的关闭)

解决方案四之sessionStorage:把ifrmae的信息保存在sessionStorage中

优点:

  • 简单
  • 存储大小为5M,足够使用
  • 保存在本地,不会与后端交互
  • 基于会话存在,会话关闭数据清理(正好符合了产品的需求,完美解决)

涉及到的方法:

保存localStorage:localStorage.setItem("key","value");
获取localStorage:localStorage.getItem("key");

保存sessionStorage:sessionStorage.setItem("key","value");
获取sessionStorage: sessionStorage.getItem("key");

转载于:https://www.cnblogs.com/alisleepy/p/11200296.html

HarmonyOS实战开发Web组件(Cookie及数据存储)的应用 ●如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:●关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。 阅读详情

相关推荐

机器视觉检测到底怎么做,经验分享

笔者做机器视觉检测已经有五六年了,也算是对机器视觉的检测技术有了一定的掌握。总的来说,基于机器视觉的检测技术主要包含三个部分:视觉采集模块、后台分析模块和动作决策模块。这几个分类,跟教科书上的有较大差异,很多同学觉得我在杜撰。笔者也不作反驳,因为这是笔者这些年工作经验的总结,自然区别于教科书。下面我们分开来讲这几个模块,同时会把笔者之前的论文做个推荐总结。 所有文章均可在博主的主页中找到,若无法找到,可以用搜索工具。博主的主页: https://blog.youkuaiyun.com/Aoulun 第..

Aoulun的博客 8677

浏览器本地数据存储解决方案以及cookie的坑

本地数据存储解决方案以及cookie的坑 问题: cookie过长导致页面打开失败 背景: 在公司的项目中有一个需求是打开多个工单即在同一个页面中打开了多个tab(iframe),但是需要在刷新时只刷新当前页面仍然保留着多个iframe,现在刷新有两种方式,第一种是键盘中按F5或者ctrl+F5或者ctrl+R,第二种是点击浏览器的左上角进行刷新,点击F5时可以通过监听键盘的F5点击事件...

djb8317的博客 486

不用写代码!3个免费在线工具教你完成Lasso回归分析(含生存资料处理)

本文介绍3款免费在线工具,帮助用户无需编程即可完成临床数据的Lasso回归分析,特别适合处理生存资料。通过详细的操作指南和实战技巧,读者可以轻松掌握变量筛选、模型优化及结果解读,提升临床研究的效率和准确性。

weixin_33738555的博客 349

解决后台设置cookie但是前台浏览器不能存储在cookie中

测试大概是这么写的 @RestController public class UserController { @RequestMapping("/test") public void login(HttpServletResponse response) { Cookie cookie = new Cookie("test","test"); ...

Alina_shu的博客 1万+

投第一篇SCIE英文期刊(详细步骤)

一个投稿SCIE英文期刊的过程

weixin_48849679的博客 1万+

深入解析WIFI与蓝牙模块电路设计:从原理到实战

本文深入解析了WIFI与蓝牙模块的电路设计,从核心原理到实战应用。文章以AP6256模块为例,详细拆解了电源树、时钟电路、接口设计及天线射频路径等关键环节,并提供了PCB布局布线的实用准则与调试方法,旨在帮助硬件工程师设计出稳定可靠的无线产品,规避常见陷阱。

weixin_29186249的博客 150

本地写入cookie失败,chrom调试无反应

今天在项目中写入cookie时,一直没反应.原生js和插件都尝试了,可还是没有反应。 结果发现!!! 不要直接是file://这种格式的打开文件 这种方式不可取,有两种解决方法: 1.将文件放到服务器上运行 (意思就是,如果是员工,确定代码无误可提测) 2.本地调试cookie不建议用chrome,可以换个浏览器。 (我用的是火狐) 最后提测,也是ok的,完美解决问题。 ...

weixin_42452902的博客 1175

ESP32蓝牙广播数据自定义指南:让你的设备更容易被手机发现

本文详细介绍了如何通过自定义ESP32蓝牙广播数据提升设备在手机端的可发现性。从广播数据结构、扫描响应优化到跨平台兼容性设置,提供了全面的技术指南和实战代码示例,帮助开发者解决智能硬件开发中的蓝牙连接难题。

weixin_29172201的博客 272

Web本地数据存储:Cookie、SessionStorage与LocalStorage

今天,我们就来深入探讨三种常见的本地数据存储方式:Cookie、SessionStorage和LocalStorage,看看它们各自的特点、用途以及它们之间的区别。

前端小巷子的博客 886

816华为OD机试真题 新系统 - 电池充电时间计算 (Java/Py/C/C++/Js/Go)

816华为OD机试真题 新系统 - 电池充电时间计算 (Java/Py/C/C++/Js/Go)

算法大师! 473

0.嵌入式控制器EC实战 Embedded Controller开发概述

文章目录前言1.嵌入式控制器EC概述2.EC芯片框图(IT8502为例)3.General Purpose I/O Port (GPIO)4.SMBus(System Management Bus,系统管理总线)5.PWM、TACH6.KBC(KeyBoard Controller)7.PS/28.ADC(模数转换)总结 前言 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 1.嵌入式控制器EC概述 嵌入式控制器EC是挂在CPU的L

qq_30135687的博客 1万+

数据存储——cookie

一、前言 随着 Web 应用程序的出现,也产生了对于能够直接在客户端上存储用户信息能力的要求。想法很合乎逻辑,属于某个特定用户的信息应该存在该用户的机器上。无论是登录信息、偏好设定或其他数据,Web 应用提供者发现他们在找各种方式将数据存在客户端上。这个问题的第一个方案是以 cookie 的形式出现的,cookie 是原来的网景公司创造的。一份题为“Persistent Client State...

仰望星空的代码 1825

电脑硬件:电脑主板上的接口介绍,看完你就懂了

它们主要用于连接老式的键盘和鼠标,虽然速度和兼容性不如USB接口,但在某些特定场合依然发挥着重要作用。PCIe接口是主板上的扩展能力象征,可以连接各种扩展卡,如显卡、声卡、网卡等。电脑主板作为电脑硬件组成关键的部分,今天给大家分享一下电脑主板上有哪些接口,具体每一个接口的特点、使用场景,有需要的朋友可以来了解一下!它们不仅能连接鼠标、键盘、U盘、打印机,还能连接各种外设,如移动硬盘、游戏手柄等。:虽然现在用得越来越少,但在一些特定场合,如工业控制、老旧设备上,仍然需要使用PS/2接口。

IT技术分享社区 2787

HarmonyOS:管理Cookie及数据存储

Cookie管理 Web组件提供WebCookieManager类来管理Cookie信息。Cookie信息存储在应用沙箱路径下/proc/{pid}/root/data/storage/el2/base/cache/web/Cookies的文件中。

ChinaDragon10的博客 1595

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

前端数据存储全解析:localStorage、sessionStorage 与 Cookie

Cookie 是服务器发送到用户浏览器并保存的小段文本,它会在浏览器下次向同一服务器发起请求时被携带并发送到服务器上。会话状态管理:如用户登录状态、购物车内容、游戏分数等需要记录的信息个性化设置:如用户自定义设置、主题等浏览器行为跟踪:如跟踪分析用户行为、广告投放等对于更复杂的数据存储需求,Web Storage API 和 Cookie 可能不足以满足。IndexedDB 提供了一个完整的客户端数据库解决方案:支持存储大量结构化数据支持索引和事务支持复杂查询和游标支持二进制数据(如文件、图像)

m0_74037439的博客 9223

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

鸿蒙5.0开发:Web组件(Cookie及数据存储)

Cookie是一种存储在用户计算机上的小文本文件,用于在用户访问网站时存储和提取信息。

AyomQAQ的博客 1308

鸿蒙next开发:ArkWeb-管理Cookie及数据存储

本文介绍了鸿蒙HarmonyOS开发中Web组件的Cookie管理与缓存存储功能。

qq_39652397的博客 989

数据存储 cookie、localStorage、sessionStorage

数据存储 cookie cookie只能在服务器环境下使用 cookie存储的是键值对(key=value,如果没有等于号,默认是key为空,value为存储的值) //cookie 设置的是字符串 document.cookie='username='+inp.value; document.cookie='age=20' 设置生存期 cookie默认生存期是 一次会话(session...

qq_36303110的博客 148

Cookie与本地存储空间的详细介绍和对比

本文将详细对比Cookie和本地存储空间这两种存储机制,帮助开发者根据具体需求选择最合适的技术。

驴大毛的博客 1674

H5中的cookie和数据存储

文章目录H5中的cookie和数据存储cookie的设置,获取和删除cookie的使用h5 storage永久数据持久化 H5中的cookie和数据存储 Cookie 数据存储到计算机中,通过浏览器控制添加与删除数据 Cookie的特点 存储限制 域名100个cookie,每组值大小4KB 客户端、服务器端,都会请求服务器(头信息) 页面间的cookie是共享 cookie的作用 页面用来保存信息 同一个网站中所有页面共享一套cookie cookie的使用 设置cookie 过期时间expires 读取

weixin_44691513的博客 3906

HarmonyOS NEXT开发 Cookie及数据存储

Cookie是一种存储在用户计算机上的小文本文件,用于在用户访问网站时存储和提取信息。它由网站服务器发送到用户的浏览器,并存储在用户的计算机上。每当用户访问该网站时,浏览器将发送该Cookie回服务器,以用于识别用户和存储用户的首选项和其他信息。

csdn_wzq的博客 849

【入门到精通】鸿蒙next应用开发:Web组件(Cookie及数据存储)

Cookie是一种存储在用户计算机上的小文本文件,用于在用户访问网站时存储和提取信息。

m0_73088370的博客 1077

数据存储:cookie、localStorage、sessionStorage 详解

储存的数据可能是从服务器端获取到的数据,也可能是在多个页面中需要频繁使用到的数据 1.简单对比 1、cookie:4K,可以手动设置失效期 2、localStorage:5M,除非手动清除,否则一直存在 3、sessionStorage:5M,不可以跨标签访问,页面关闭就清理 2.cookie Cookie通过在客户端记录信息确定用户身份 Session通过在服务器端记录信息确定用户身份 一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作则应该属于另一个会话 HT

weixin_38822843的博客 2195
上一篇: php操作Memcache的一个类库
下一篇: 在windows系统下打包linux平台运行的go程序
djb8317
博客等级 码龄12年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值