【问题标题】:How to overcome the browser limit for cookies?如何克服浏览器对 cookie 的限制?
【发布时间】:2015-01-23 07:48:17
【问题描述】:

我正在开发一个使用 jQuery 数据表的应用程序。而且我也在使用 Column Filters 插件。要求之一是能够保持数据表的状态,从而也能够保持列过滤器的状态。

但是,问题在于应用程序可以有成百上千个表,并且每个表都有一个单独的 cookie。有了这个,用户可以非常快速地突破浏览器允许存储的 cookie 数量的限制(大约 300 个)。这个数字是一个猜测,关键是它是一个小数字,如果我要为每个生成的表打开 bStateSave,用户迟早会打破这个限制,从而破坏应用程序。

对于这个问题有哪些替代解决方案?将状态存储在数据库中是不好的,因为应用程序已经在不断地查询数百万/数十亿的数据。

【问题讨论】:

  • 使用 one cookie 并存储字符串化为 JSON 的对象或数组。
  • 使用这种方法,我需要担心的是达到 cookie 字节大小限制。有没有办法在它击中它之前检查它的大小?在请求/响应标头中传递这么大的 cookie 是否会对性能产生显着的负面影响?

标签: jquery cookies browser datatable limit


【解决方案1】:

Datatables 默认使用 localStorage 和 sessionStorage,所以除非你必须支持像 ie 6/7 这样的旧浏览器,否则你不必担心遇到 cookie 限制。

https://datatables.net/examples/basic_init/state_save.html

与设置为 0 的 stateDuration 结合使用,您的状态将被无限期存储。 https://datatables.net/reference/option/stateDuration

话虽如此,如果您最终也会被浏览器限制为 localStorage...

达到这些限制时唯一可行的解​​决方案是使用 stateLoadCallback 和 stateSaveCallback 在服务器上保存状态。

【讨论】:

  • 嗨,我忘了说。支持 IE7。
  • 但正如你所说,即使使用本地/会话存储,我也可能会达到限制。
  • 是的,我建议使用服务器方法。还有一点需要注意的是,如果你使用决定使用状态保存,你就不能使用 deferredLoading --datatables.net/forums/discussion/comment/41588
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-03
  • 2019-12-26
  • 1970-01-01
  • 2011-07-19
  • 2012-10-06
  • 2011-06-21
  • 2017-12-21
相关资源
最近更新 更多