V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qingshuang
V2EX  ›  程序员

订单列表页的缓存怎么做啊。。

  •  
  •   qingshuang · 2020-03-05 19:34:30 +08:00 · 2920 次点击
    这是一个创建于 1728 天前的主题,其中的信息可能已经有所发展或是发生改变。
    做了个订单模块的功能,创建完返回列表页,异步传到 ES 服务器,返回列表页的时候查询最新订单,这时候订单还没同步到 ES,刚刚创建完的订单就没有显示。
    目前想到俩个方案
    1 是搞个 redis,一直缓存该用户的前 20 个订单,搜索条件为空的时候就查 redis
    2 是前端等待 1 秒再返回列表页
    这种限制一般前后端都需要加的,想问问各位老哥对于后端模块一般的通用做法是什么?
    8 条回复    2020-03-06 16:11:37 +08:00
    levylll
        1
    levylll  
       2020-03-05 19:44:23 +08:00
    ES 的 refresh_interval 设置了嘛?干嘛要用 ES 存缓存数据呢?要进行中文检索么?
    xuanbg
        2
    xuanbg  
       2020-03-06 00:09:12 +08:00
    刚刚创建的订单我不用调接口就能显示。。。自己创建的数据,自己心里还没点 B 数吗?有创建订单成功返回的订单 ID 和订单号就足够自己组装完整的订单数据了。
    opengps
        3
    opengps  
       2020-03-06 09:13:38 +08:00
    搞个创建完成的弹窗提示,这个过程足够耽误 1 秒了
    qingshuang
        4
    qingshuang  
    OP
       2020-03-06 10:40:27 +08:00
    @levylll 肯定有中文检索啊。。 搜索条件是商品名啊,收件人什么的
    我在想可不可以搜索条件为空时捞 db,有搜索条件再去 es 里捞,这样性能应该会好些。
    列表页界面差不多上面一排收件人,订单号,商品名称这些筛选条件
    下面排 20 个订单这种
    qingshuang
        5
    qingshuang  
    OP
       2020-03-06 10:43:37 +08:00
    @xuanbg 返回列表页显示 20 个订单,总还是要显示其他 19 个订单的,调接口肯定要调的。
    第一个订单数据自己拼,调完接口再对第一个订单做个判重? 感觉有点复杂啊
    感觉这和我发完贴返回论坛列表页没啥区别。。 可能论坛列表页显示的数据结构更简单些吧
    qingshuang
        6
    qingshuang  
    OP
       2020-03-06 10:44:02 +08:00
    @opengps 这算是前端手段,后端总归也需要其他手段保护下
    gsanidt
        7
    gsanidt  
       2020-03-06 11:01:05 +08:00
    你这样缓存,如果订单状态变了,你页面也没有办法显示最新的数据呀?
    xuanbg
        8
    xuanbg  
       2020-03-06 16:11:37 +08:00
    @qingshuang 详情数据都有,列表数据你就没有了?如果真没有,那就调接口读取好了,读不到新数据就自己加进去。

    当然,这仅仅是后端无法解决你的问题时,作为前端的一种解决方案。并不是推荐这样做。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3006 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:48 · PVG 22:48 · LAX 06:48 · JFK 09:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.