【问题标题】:saving data in cookies to save trips to database将数据保存在 cookie 中以保存到数据库的行程
【发布时间】:2013-06-11 06:57:33
【问题描述】:

我有一个网页,它会在页面加载后立即使用 getJSON 查询数据库,以填充下拉框。 然后,当用户从该初始框中选择一个选项时,将进行第二次 getJSON 调用,以使用相关数据填充第二个下拉列表。 为了保存对数据库的调用(特别是如果用户不断在第一个组合框中切换值),我正在考虑将下拉菜单的数据保存在 cookie/ 但我想做一些 cookie 只对当前会话有益的事情……因为从技术上讲,数据库中的数据可能会发生变化。它不会经常改变......但它可以改变。

我找到了以下帖子:

jquery save json data object in cookie

我正在考虑尝试。
我正在考虑实现的逻辑是这样的:

一个。准备好文档后,检查 cookie 是否存在。如果没有,查询 db 并获取数据。创建 cookie 湾。当会话被终止时,终止 cookie。

我的问题如下:

  1. 这是正确的方法吗?
  2. 如何修改上述 stackoverflow 帖子中的示例,以使 cookie 仅适用于当前会话?

仅供参考。目标浏览器是 IE 9。

谢谢。

编辑 1:

我发现这篇文章使用 jquery 创建会话 cookie:create session based cookie, jquery 我试试看。

编辑 2:

我想我也会在使用会话存储时检查它。

【问题讨论】:

  • 鉴于您刚刚提到从数据库中提取的选项可以更改,您可能应该每次都进行实时调用。如果没有,您最终可能会导致某人一直保持浏览器打开,并且永远不会获得更新的选项。

标签: jquery html database session-cookies


【解决方案1】:

绝对是一种有趣的方法。

使用this cookies 插件,如果您不指定expire,您的cookie 将仅在会话期间保留。所以你可以简单地做:

$.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));

它只会在本次会议中保留。

仅作记录 - 会话存储绝对是比 cookie 更好的选择。

【讨论】:

  • 您在一天内更改下拉菜单内容的可能性有多大?您可能会不时设置它们,仅此而已。如果您在更新选项卡时浏览您的网站,您最终可能会遇到一些错过更改的用户。这完全取决于更新的频率。
  • 这只是一个常识游戏。经常更新?没有缓存。稀有更新?把它缓存起来。
  • 更新不会经常发生。也许一个月一次
  • 所以存放 2 - 3 天!或者永远存储它们并使用版本控制。跟踪最新的更新日期并将其发送到浏览器。如果 cookie 存在并且 cookie 中的日期早于最新更新 - 废弃缓存并重新加载。
  • ZorleQ 你介意在你的答案中发布一个例子吗?另外你对使用 sessionStorage 有什么想法?
猜你喜欢
  • 2012-05-19
  • 1970-01-01
  • 1970-01-01
  • 2019-11-22
  • 1970-01-01
  • 1970-01-01
  • 2017-05-13
相关资源
最近更新 更多