我有以下对象。
<?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;
,latitude
和longitude
,并将各自的值存储在各自的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的最佳/理想方式?(请给出可能的原因)
答案 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。