我正在实施即时搜索。由于网络没有按照响应的顺序保留请求的顺序,我不希望(早先)搜索“francis”来覆盖(后来)搜索“francis haart”。
我在考虑在请求中为自定义http标头添加时间戳,然后将其解压缩并将其编织回响应中。 (我正在使用ajax作为请求,并使用django作为响应。)
对请求(例如搜索查询)一致的响应时间戳(例如搜索结果)的最佳做法是什么?
答案 0 :(得分:1)
最简单的方法(对我而言)是在请求中添加一个随机生成的id,它将作为JS变量存储在浏览器中,并且还会直接从服务器发送回来和结果一起发送。如果响应id等于存储的id,则显示它。如果没有,这意味着此后又发出了另一个请求,您可以放弃刚回来的请求。
当用户输入时,会有一个轻微的风险,因为下一个字母将在最后一个请求返回之前输入,所以不会显示中间结果集,但实际上这可能对您有利,因为不断闪烁的结果可能会显示凌乱。