将JSON对象存储在cookie中是一种好习惯吗?

时间:2018-07-04 11:40:50

标签: javascript json cookies

我有以下对象。

<?php
    /**
    *  Template Name: Book
    */ 
?>

我想在cookie中存储纬度,经度和密码的值。

我知道三种方式。

i)将整个position = { latitude: 19.067863700000004, longitude: 72.9991898, pincode: 400701 } 对象存储在cookie中。(根据this,不建议这样做)

position

ii)创建三个cookie var pos = JSON.stringify(position); document.cookie = "position=" + pos; latitudelongitude,并将各自的值存储在各自的cookie中。

pincode

iii)创建一个cookie document.cookie = "latitude=" + position.latitude; document.cookie = "longitude=" + position.longitude; document.cookie = "pincode=" + position.pincode; ,并将此cookie中的存储值为position

19.067863700000004|72.9991898|400701

我的问题是哪种是存储cookie的最佳/理想方式?(请给出可能的原因)

2 个答案:

答案 0 :(得分:2)

对于那个小对象,我肯定会将它作为JSON放在cookie中。这样做的开销几乎不存在,而且绝对不是问题。

对于通常最有效的方法,它高度取决于您所拥有的东西以及您最终想要得到的东西。

1。)将产生开销(来自JSON结构,其他字符),并且对于大型而复杂的对象,您将拥有较大的cookie。一个人可以轻松超过Cookie的 4K大小限制

2。)这是每个cookie中的最小最小有效负载,但是对于很多数据,您最终将获得很多cookie,并且可读性不如人们所愿。另外,会有很多cookie名称,因此我将使用您的应用变量来命名cookie名称。您不需要其他应用程序用这样的简单名称覆盖您的Cookie。如果对象具有嵌套对象,则名称将开始看起来像myapp-object-nested1-nested2-property 。当您再次需要cookie中的单个对象时,可能很难导航然后放回原处。

3。)是1和2的混合。它在每个cookie中存储更多数据,但可读性更高,因为您具有完整的路径名称,并且可以将cookie简称为myapp-name 不管嵌套有多深。

就您而言,我个人会在这里使用所有合一Cookie-仍然为您的Cookie提供唯一的应用程序前缀。

通常,从大型JSON中,我会首先过滤掉不需要的内容,然后我会采用第二种方法,但每个cookie不会包含1个值。而是,每1个Cookie使用LOGICAL或STRUCTURAL(类似于一个大对象中的较小对象)GROUP。命名很简单,并且将数据分成多个Cookie,并留有一些开销,以提高可读性,并在需要时轻松合并。

另一种选择是浏览器的本地存储或会话存储,那里的限制更高,因此您可以直接转储更大的JSON。

答案 1 :(得分:1)

如果您担心安全性,最好对原始数据使用某种单向加密算法,这样可以访问用户浏览器的人将无法读取/理解cookie。