场景:两个页面,在页面 1 进行搜索配置后跳转页面 2 获取并且展示搜索结果;
痛点是:页面 1 配置出来的参数比较复杂,不适合放进 url 中;
希望刷新,或者重新打开页面 2 依旧可以传递正确的参数给后端获取结果;
除了将该数据放进浏览器缓存中,还有别的方法么?

场景:两个页面,在页面 1 进行搜索配置后跳转页面 2 获取并且展示搜索结果;
痛点是:页面 1 配置出来的参数比较复杂,不适合放进 url 中;
希望刷新,或者重新打开页面 2 依旧可以传递正确的参数给后端获取结果;
除了将该数据放进浏览器缓存中,还有别的方法么?
1 iOCZS Jun 19, 2024 把参数存本地 |
2 HariopaNic OP @iOCZS localStorage 和 sessionStorage ?有别的方案么 |
3 rbe Jun 19, 2024 放不进 url 的原因是什么呢?如果是担心 url 编码或者长度的问题,可以用一些特殊的算法来解决,比如把参数用 lz-string 处理一下。typescript playground 就是用这种方式在 url 传递参数的。 https://github.com/pieroxy/lz-string |
4 iOCZS Jun 19, 2024 @HariopaNic 没必要想太多,你想想有哪些场景,这个做法是不是能覆盖到就好了。如果我打开多个标签会不会有影响,如果我直接去了第二页会怎么样。。。。 |
5 HariopaNic OP @iOCZS 如果浏览器缓存被清除,或者用别的浏览器打开(包括 url 分享给别人等情形)都无法获取正确结果。 |
6 iOCZS Jun 19, 2024 @HariopaNic 参数加密,你第一页提交参数,后端下发一个 id 给你,它把参数存起来,你拿着 id 去请求列表数据 |
7 iBatis Jun 19, 2024 via Android 如果后端支持,放 redis |
8 iOCZS Jun 19, 2024 @HariopaNic 下发 id 或者把 id 放在重定向链接里 |
9 HariopaNic OP @rbe 谢谢大佬告知这个库,我刚试了下还是比较长,准备叫后端开个接口了。 |
10 HariopaNic OP @iOCZS 嗯,本来不想后端参与的,现在看还是得找后端存。 |
11 jevonszmx Jun 19, 2024 第一页本地记一个 token ,参数提交到后端,用 token 为 key 来记参数,后面不管几个页面,只要正确传 token 就好 |
12 summerwar Jun 19, 2024 类似于短网址的办法,把长参数生成一个短代码,然后存到后台 redis 里,然后传短代码参数传到 url 中,然后结果页获取短代码,去 redis 中获取长参数,然后返回结果。 |
13 xuelu520 Jun 19, 2024 我觉得你的想法就是有问题的。 参数就应该放 url 中,如果被缓存,那应该处理掉缓存,不应该本末倒置。 参考搜索头部几家,参数够复杂了吧,也都是走的 url |
14 HariopaNic OP @xuelu520 头部搜索库的参数很少啊,除了问句好像也没啥。我的场景是:页面有多个实体,每一个实体有多个属性,每一个属性能配置多条搜索规则(字段是否等于,包含,大于,小于.....某个输入属性)。这可太长了。 |
15 HariopaNic OP @jevonszmx 那把结果页面分享给别人就不行了吧? |
16 jevonszmx Jun 20, 2024 @HariopaNic 如果你要做分享,那就要记住 token 和当前用户的关系(记录 token A 和用户 A ),被分享的人打开后分配一个新的 token (记录 token B 和用户 B ),然后系统关联两个 token 的关系,这样就可以关联起来了。 |