我意识到这可能不适合SO,所以如果是这样的话,请告诉我应该在哪里移动/发布。
我的想法是在用户登录系统后,以cookie的形式将用户首选项存储在客户端上。如果用户修改了所述首选项,请更新cookie。我需要这样做,因为一些偏好是与客户相关的,需要通过JavaScript查看。
我意识到我也需要存储在服务器上的偏好。只是想知道是否将它们拉入饼干是一个好主意。我的应用程序主要是ajax驱动,因此我想将首选项拉下来并存储它们。我不想用每个服务器请求推送它们。
我想避免像本地存储这样的内容,这样我就不必担心浏览器了。 Cookie似乎得到所有浏览器的大力支持。
有人同意或有更好的方法吗?
答案 0 :(得分:5)
现在编辑你已经改变了我们第一次写答案时的问题:
如果您将偏好数据存储在服务器上,那么没有理由在访问之间将首选项数据保留在本地用户的计算机上因此没有理由将数据放入cookie中,因为它只是增加了每个客户端/服务器往返并且必须在客户端计算机上存储。
相反,我建议您只需在页面的javascript中放置一个首选项对象:
var userPref = {theme: "fun", permitContact: false, lastDisplay: "threaded"};
然后,您可以通过javascript从任何页面访问首选项值,代码如下:
if (userPref.lastDisplay == "threaded") {
// do something
}
编辑问题之前的旧答案:
如果您希望客户端首选项在客户端可能使用的不同浏览器中运行,则应将首选项存储在服务器上(强烈推荐)。您可以随时在网页中使用它们,只需在每个页面中包含少量javascript,将首选项对象的属性设置为用户首选项的值。然后,您可以拥有一个首选项页面,用户可以在其中修改/更新首选项,并将新更改的首选项重新存储在服务器上。
Cookie适用于暂时状态,可能随时被清除,并且只能在该特定计算机上运行。另外,如果您使用cookie并且如果userA注销并且userB在同一台计算机上登录,则用户B的首选项将是错误的。
答案 1 :(得分:2)
一般情况下,cookie是个好主意,前提是您不必存储大量数据。使用cookie存储内容时,请记住几件事:
用户可以手动编辑首选项,因此请确保没有is_root=false
之类的内容,而无需进行额外的服务器端检查。
当用户删除cookie并且偏好消失时,这可能很烦人,我会寻找镜像到cookie的服务器端首选项存储,以便JavaScript可以使用它们。
其他可能性是使用内联首选项而不是静态文件来提供动态JavaScript - 您可以像提供动态HTML一样提供JavaScript,但是您必须小心缓存。
答案 2 :(得分:0)
您需要将偏好设置存储在服务器上,因为您不希望每次用不同的计算机登录时都不得不重新创建个人设置。
只需将它们存储在服务器端。