javascript - 将 JSON 对象存储在 cookie 中是一种好习惯吗?
问题描述
我有以下对象。
position = {
latitude: 19.067863700000004,
longitude: 72.9991898,
pincode: 400701
}
我想将纬度、经度和密码的值存储在 cookie 中。
我知道三种方法。
i)将整个position
对象存储在cookie中。(根据this不推荐)
var pos = JSON.stringify(position);
document.cookie = "position=" + pos;
ii)创建三个cookie latitude
,longitude
并将pincode
各自的值存储在各自的cookie中。
document.cookie = "latitude=" + position.latitude;
document.cookie = "longitude=" + position.longitude;
document.cookie = "pincode=" + position.pincode;
iii) 创建一个 cookieposition
并在此 cookie 中存储值是19.067863700000004|72.9991898|400701
var pos = position.latitude + "|" + position.longitude + "|" + position.pincode;
document.cookie = "position=" + pos;
我的问题是存储 cookie 的最佳/理想方式是什么?(如果可能,请给出理由)
解决方案
对于那个小对象,我肯定会把它作为 JSON 放入 cookie 中。这样做的开销几乎不存在,绝对不是问题。
至于什么通常最有效,这在很大程度上取决于您拥有什么以及最终想要什么。
记住:
它会产生开销(来自 JSON 结构、附加字符)和 w 你不希望其他应用程序用这样的简单名称覆盖你的 cookie。
选择一个更好的名称,其名称前缀为 yourappname-something 或一些随机较长的字符串,而不是名称。
大而复杂的对象 = 你会有大的 cookie。人们可以轻松地超过4K 大小的 cookie 限制。
要解决最后一个问题,您可以在每个 cookie 中放置最少的有效负载,但是对于大量数据,您最终会得到很多 cookie,并且它不像人们想要的那样可读。如果您的对象有嵌套对象名称将开始看起来像 myapp-object-nested1-nested2-property。当您再次需要来自 cookie 的单个对象时,这可能很难导航然后重新组合在一起。
您可以混合使用这两种方法 - 在有意义的情况下将大型对象重组为较小对象的组合。这将介于太大的 cookie 和太多的小 cookie 名称之间。尝试以一种使重新组装可读且快速的方式进行操作。
另一种选择是浏览器的本地或会话存储,那里的限制要高得多,因此您可以直接转储更大的 JSON。
推荐阅读
- javascript - Javascript:在 [enter] 上跳转到下一个启用的文本框
- javascript - 酶:在模拟“点击”时,测试异步更改的状态值
- hubl - 是否可以跨模块和模板共享 HubL 宏?
- android - 以编程方式在约束布局内传播线性布局
- c++ - 无法从文件复制到指向对象的指针向量
- css - Bootstrap 3:使用 input-group-btn 的输入验证类样式
- powershell - 检查变量是否为空,如果为空则重新启动 localhost
- python - 寻找避免合并两个数据框的优雅解决方案
- java - 在活动的 JRE 中找不到 tools.jar - Spring Tools Suite
- python - Python。在 Pandas 数据框中使用 Lambda 函数的 IF 条件