v2ex 的页面缓存有点不人性化 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Leon6868
V2EX    反馈

v2ex 的页面缓存有点不人性化

  •  
  •   Leon6868 2020-07-21 20:54:28 +08:00 2357 次点击
    这是一个创建于 1938 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Google Chrome 83.0.4103.116 (正式版本) ( 64 位)
    举个例子:从主页前往签到页面并签到,页面显示签到成功,但按下返回键回到主页后,签到信息不会更新。
    消息提示功能也有类似的问题

    第 1 条附言    2020-07-21 22:03:38 +08:00

    是我没说清楚。cache-control设置为no-cache, no-store。


    复现:

    from flask import Flask app = Flask(__name__) @app.route('/') def index(): doc = """<h1>{} times</h1> <ul> <li><a href="/uncache1"> cache-control: no-cache, no-store</a></li> <li><a href="/uncache2"> cache-control: max-age=0</a></li> <li><a href="/log">log</a></li> </ul>""" return doc.format(str(time)) @app.route('/log') def logger(): global time doc = """<h1>{} times</h1> <h2>Please turn back</h2>""" time += 1 return doc.format(time) @app.route('/uncache1') def uncache1(): doc = """<h1>{} times</h1> <ul> <li><a href="/">cache-control: unset</a></li> <li><a href="/log">log</a></li> </ul>""" return doc.format(str(time)), [("cache-control", "no-cache, no-store")] @app.route('/uncache2') def uncache2(): doc = """<h1>{} times</h1> <ul> <li><a href="/">cache-control: unset</a></li> <li><a href="/log">log</a></li> </ul>""" return doc.format(str(time)), [("cache-control", "max-age=0")] if __name__ == '__main__': time = 0 app.run(port=80,host="0.0.0.0") 

    够清楚了吧?

    Leon6868
        1
    Leon6868  
    OP
       2020-07-21 20:58:13 +08:00
    @Livid 是否可以通过给主页添加“Cache-Control”的 header 来解决?
    Girlphobia
        2
    Girlphobia  
       2020-07-21 21:13:28 +08:00 via Android
    @Leon6868 根据 HTML Living Standard,浏览器会保存页面的 browsing context 与 session history,在访问历史的时候会读取之前页面的状态,与 HTTP 缓存无关。
    如果这是一个需要解决的问题,做法应该是页面检测到返回时刷新,或者对签到之类的信息使用一个单独的前端模块发送 XHR 请求,并且在前端更新。
    wxsm
        3
    wxsm  
       2020-07-21 21:15:22 +08:00 via iPhone
    问这个问题说明你并不理解浏览器是如何缓存的。建议自己先弄明白再 at 别人。
    Licsber
        4
    Licsber  
       2020-07-21 21:32:06 +08:00
    "但按下返回键回到主页后" 好了 本帖不用看了
    推荐 lz 一个解决方案:下次按下左上角“V2EX”logo 返回
    缺点嘛 就是会多一些网络请求 但是既然你认为不更新是 bug 的话 那就多一次呗
    jugelizi
        5
    jugelizi  
       2020-07-21 21:33:40 +08:00 via iPhone
    手动问号 你真的理解浏览器的行为?
    arischow
        6
    arischow  
       2020-07-21 21:34:50 +08:00 via iPhone
    你吓到我了
    Leon6868
        7
    Leon6868  
    OP
       2020-07-21 22:05:07 +08:00
    @wxsm
    @Girlphobia
    是我没说清楚。cache-control 设置为 no-cache, no-store 。当然直接点击 logo 也是一个解决方法
    Leon6868
        8
    Leon6868  
    OP
       2020-07-21 22:05:46 +08:00
    @Licsber 我没说是 bug,我说有点不人性化(毕竟键盘 alt+←也很爽)
    mercury233
        9
    mercury233  
       2020-07-21 22:08:51 +08:00
    后退就要重新载入才是真的不人性化吧
    Leon6868
        10
    Leon6868  
    OP
       2020-07-21 22:14:08 +08:00
    @mercury233 设置里再添加一个开关(手动滑稽)
    Licsber
        11
    Licsber  
       2020-07-22 00:48:53 +08:00
    @Leon6868 #8
    @mercury233 #9 同意 9 楼观点
    如果一个网页连后退也要刷新的话 假设你网络状态不好怎么办 其次 给服务器( CDN 多带来多少压力
    另外 常见的使用场景 难道不是主页点着 从上点灰到下 刷完一遍之后刷新主页重新把亮的点灰么(
    假设这个主页是无缓存的 你会丢失浏览状态 并且 一个强制实时更新的主页更加不容易寻找内容
    autoxbc
        12
    autoxbc  
       2020-07-22 11:44:43 +08:00
    其实大家都是用脚本签到的

    油猴写的半自动方案,访问主页时后台签到,仅仅免去点击,也不算违规
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3042 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 12:48 PVG 20:48 LAX 04:48 JFK 07:48
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86