我应该在查询字符串或会话存储中存储基本信息(如 table 排序或页码)吗?

Should I store basic information (like table sort or page number) in query string or session storage?

我正在开发一个 Web 应用程序(某种仪表板),在某些页面上我有一些数据 table。每个数据 table 都有自己的页码、过滤器和排序。虽然数据是在后台异步获取的(因此页面不需要重新加载),但我需要存储这些信息(页面、过滤器、排序)以便它可以在页面刷新等过程中保持不变。据我所知,有两种方式来存储这些信息:

到目前为止,我习惯于将这些信息存储在查询字符串中,因为我认为它有一些优点:例如用户可以复制、添加书签或与同事共享 URL 以讨论他们感兴趣的一些数据(例如在 table 的第 10 页上执行一些过滤和排序后)。使用会话存储我无法做到这一点

但现在我正在扩展过滤功能的能力,现在在查询字符串中使用的信息很长,甚至可能超过限制(我认为是 2048 个字符,对吧?)。而且每个页面上可能有多个table,因此查询字符串甚至会变得更长。

首先我想知道在这种情况下最好的做法是什么

其次,该功能(能够 copy/bookmark/share 页面原样)真的那么重要吗?

注意:请注意,我所说的信息不是秘密或敏感信息。它只是 table 页码、table 过滤器和 table 排序

2048 的限制似乎并不是真正的限制,请参阅 What is the maximum possible length of a query string?

关于最佳方法 - 我个人一直讨厌大多数“新网站”不支持您关心的功能,所以我个人鼓励您支持它!

最后关于确切的机制,首先,查询字符串方法将继续工作超过 2048 个字符,但我可以看到复制和粘贴它可能很笨重,并且取决于媒体共享 URL 它会引入错误。

因此,从用户的角度来看,我认为最好的体验是将这些搜索存储在后端并为 permalinking/sharing/bookmarking 启用更短的 URL。

这个新的 URL 可以由用户通过特定的 UI 按钮 (Share/Permalink) 获得,所以你在那一刻保存搜索并且 return URL,或者(最佳体验,但实施起来更难、成本更高)您可以连续保存它并将生成的 URL 发送回 UI 并使用 Javascript 替换 URL 更好的版本(总是或只是当人们复制它时)。

还要考虑:继续使用查询字符串可能就足够了:-)