我正在开发一个使用jQuery的Datatables的应用程序。我也在使用Column Filters插件。其中一个要求是能够保持数据表的状态,从而也能保持列过滤器的状态。
然而,问题是应用程序可能有数百,数千个表,并且每个表都有一个单独的cookie。有了这个,用户可以非常快地打破允许浏览器存储的cookie数量限制(大约300)。这个数字是一个猜测,重点是它是一个小数字,如果我要为每个生成的表打开bStateSave,迟早(比之后更早)用户将打破该限制,从而打破应用程序。
这个问题有哪些替代解决方案?将状态存储在数据库中是不好的,因为应用程序已经不断地查询数百万/数十亿的数据。
答案 0 :(得分:1)
Datatables默认使用localStorage和sessionStorage,因此除非您必须支持像6/7这样的旧浏览器,否则您不必担心遇到cookie限制。
https://datatables.net/examples/basic_init/state_save.html
与stateDuration设置为0一起使用时,您的状态将无限期地存储。 https://datatables.net/reference/option/stateDuration
话虽如此,如果你最终也会受到浏览器对localStorage的限制......
达到这些限制时唯一可行的解决方案是使用stateLoadCallback和stateSaveCallback在服务器上保存状态。