yaj*_*jiv 11 javascript cookies json
我有以下对象。
position = {
latitude: 19.067863700000004,
longitude: 72.9991898,
pincode: 400701
}
Run Code Online (Sandbox Code Playgroud)
我想在 cookie 中存储纬度、经度和密码的值。
我知道三种方法。
i)将整个position对象存储在cookie中。(根据this不推荐)
var pos = JSON.stringify(position);
document.cookie = "position=" + pos;
Run Code Online (Sandbox Code Playgroud)
ⅱ)创建三个饼干latitude,longitude和pincode和在相应的cookie存储各自的值。
document.cookie = "latitude=" + position.latitude;
document.cookie = "longitude=" + position.longitude;
document.cookie = "pincode=" + position.pincode;
Run Code Online (Sandbox Code Playgroud)
iii) 创建一个 cookieposition并在这个 cookie 中存储值是19.067863700000004|72.9991898|400701
var pos = position.latitude + "|" + position.longitude + "|" + position.pincode;
document.cookie = "position=" + pos;
Run Code Online (Sandbox Code Playgroud)
我的问题是存储 cookie 的最佳/理想方式是什么?(如果可能,请说明原因)
对于那个小对象,我肯定会把它作为 JSON 放在 cookie 中。这样做的开销几乎不存在,绝对不是问题。
至于什么通常最有效,这在很大程度上取决于您拥有什么以及您想要得到什么。
记住:
它会产生开销(来自 JSON 结构、附加字符)和 w 您不希望其他应用程序用这样的简单名称覆盖您的 cookie。
选择一个更好的名称,其前缀类似于 yourappname-something 或一些随机更长的字符串而不是名称。
大而复杂的对象 = 您将拥有大饼干。人们可以轻松地超过4K 大小的 cookie限制。
为了解决最后一个问题,您可以在每个 cookie 中放置最少的有效负载,但是对于大量数据,您最终会得到很多 cookie,并且它不像人们希望的那样可读。如果您的对象具有嵌套的对象名称将开始看起来像 myapp-object-nested1-nested2-property。当您再次需要来自 cookie 的单个对象时,这可能很难导航,然后再重新组合在一起。
您可以混合使用这两种方法 - 在有意义的情况下将大对象重组为较小对象的组合。这将介于过大的 cookie 和过多的小 cookie 名称之间。尝试以某种方式进行,以便重新组装可读且快速。
另一种选择是浏览器的本地或会话存储,那里的限制要高得多,因此您可以直接转储更大的 JSON。