请教一下搜索和搜索结果页面分离如何参数传递?

155 天前
 HariopaNic

场景:两个页面,在页面 1 进行搜索配置后跳转页面 2 获取并且展示搜索结果;

痛点是:页面 1 配置出来的参数比较复杂,不适合放进 url 中;

希望刷新,或者重新打开页面 2 依旧可以传递正确的参数给后端获取结果;

除了将该数据放进浏览器缓存中,还有别的方法么?

1498 次点击
所在节点    Web Dev
16 条回复
iOCZS
155 天前
把参数存本地
HariopaNic
155 天前
@iOCZS localStorage 和 sessionStorage ?有别的方案么
rbe
155 天前
放不进 url 的原因是什么呢?如果是担心 url 编码或者长度的问题,可以用一些特殊的算法来解决,比如把参数用 lz-string 处理一下。typescript playground 就是用这种方式在 url 传递参数的。

https://github.com/pieroxy/lz-string
iOCZS
155 天前
@HariopaNic 没必要想太多,你想想有哪些场景,这个做法是不是能覆盖到就好了。如果我打开多个标签会不会有影响,如果我直接去了第二页会怎么样。。。。
HariopaNic
155 天前
@iOCZS 如果浏览器缓存被清除,或者用别的浏览器打开(包括 url 分享给别人等情形)都无法获取正确结果。
iOCZS
155 天前
@HariopaNic 参数加密,你第一页提交参数,后端下发一个 id 给你,它把参数存起来,你拿着 id 去请求列表数据
iBatis
155 天前
如果后端支持,放 redis
iOCZS
155 天前
@HariopaNic 下发 id 或者把 id 放在重定向链接里
HariopaNic
155 天前
@rbe 谢谢大佬告知这个库,我刚试了下还是比较长,准备叫后端开个接口了。
HariopaNic
155 天前
@iOCZS 嗯,本来不想后端参与的,现在看还是得找后端存。
jevonszmx
155 天前
第一页本地记一个 token ,参数提交到后端,用 token 为 key 来记参数,后面不管几个页面,只要正确传 token 就好
summerwar
155 天前
类似于短网址的办法,把长参数生成一个短代码,然后存到后台 redis 里,然后传短代码参数传到 url 中,然后结果页获取短代码,去 redis 中获取长参数,然后返回结果。
xuelu520
155 天前
我觉得你的想法就是有问题的。
参数就应该放 url 中,如果被缓存,那应该处理掉缓存,不应该本末倒置。
参考搜索头部几家,参数够复杂了吧,也都是走的 url
HariopaNic
155 天前
@xuelu520 头部搜索库的参数很少啊,除了问句好像也没啥。我的场景是:页面有多个实体,每一个实体有多个属性,每一个属性能配置多条搜索规则(字段是否等于,包含,大于,小于.....某个输入属性)。这可太长了。
HariopaNic
155 天前
@jevonszmx 那把结果页面分享给别人就不行了吧?
jevonszmx
154 天前
@HariopaNic 如果你要做分享,那就要记住 token 和当前用户的关系(记录 token A 和用户 A ),被分享的人打开后分配一个新的 token (记录 token B 和用户 B ),然后系统关联两个 token 的关系,这样就可以关联起来了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1050930

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX