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