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

flask css 文件的加载的问题

  •  
  •   woshichuanqilz · 2018-02-01 13:07:17 +08:00 · 4251 次点击
    这是一个创建于 2478 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这样我用 flask 运行了一个简单的网页, 但是我有时候如果修改了 css 文件, reload 这个界面, 网页没有出现变化, 但是如果我进入到这个 css 的文件路径下面, 比如: http://192.168.0.72:5000/static/css/customlayout.css 我看到这个文件确实没有变化, 但是如果 reload 这个 css 文件, 变化有了, 然后在 reload 之前的网页, 也变化正常了。

    但是这个问题不是总会出现, 只是有的时候出现, 不知道各位大神有没有遇到过这个问题, 然后这个问题如何解决?

    12 条回复    2018-02-01 19:18:45 +08:00
    scriptB0y
        1
    scriptB0y  
       2018-02-01 13:34:49 +08:00
    应该是浏览器对静态文件缓存

    开发者工具 > Network > Disable cache 试试。开发者工具保持打开
    HypoChen
        2
    HypoChen  
       2018-02-01 13:36:58 +08:00
    楼上正解,一般是浏览器缓存,也可以开隐身模式
    ipwx
        3
    ipwx  
       2018-02-01 13:48:21 +08:00
    如果是 Chrome:在打开开发者工具面板的前提下,右键 Chrome 刷新按钮,“硬性重新加载”或者更进一步“清空缓存并硬性重新加载”。

    另一个解决方案:在 Flask 里面对资源的引用加上时间戳,比如 ".../xxx.css?" + time.time()。做的考究一点你可以把这个 "?" + time.time() 时间戳用 render_template 环境传进去,根据 app.config['DEBUG'] 决定是不是传空字符串。
    ipwx
        4
    ipwx  
       2018-02-01 13:50:11 +08:00
    第三个解决方案:产生 css 的内容哈希码,并在 Flask 里面读取这个哈希码,使得资源的引用变成 ".../xxx.css?h=" + hashcode。这个方案比时间戳方案的好处在于,deployment 版本也能用。
    ipwx
        5
    ipwx  
       2018-02-01 13:50:59 +08:00
    第四个解决方案,是第三个解决方案的变种,直接产生 xxx.[hashcode].css 文件,Flask 也引用这个文件。好处是所有上面的好处都有了,而且对 intermediate 缓存服务器友好。
    fangzq
        6
    fangzq  
       2018-02-01 13:55:02 +08:00
    在开发测试时,可以对 flask 做以下配置:

    ```
    TEMPLATES_AUTO_RELOAD = True
    SEND_FILE_MAX_AGE_DEFAULT = 0
    ```
    这样每当你的 模板文件或静态文件改变时,就能即时在浏览器里看到更改后的效果
    cowpea
        7
    cowpea  
       2018-02-01 14:08:08 +08:00
    ....css?time=......
    Cache-Control:no-cache
    renmu123
        8
    renmu123  
       2018-02-01 14:49:00 +08:00
    Chrome 可以 Ctrl+F5 强制刷新浏览器缓存
    atcdef
        9
    atcdef  
       2018-02-01 17:24:55 +08:00
    chrome 的问题,在非开发人员模式下,你就是刷新网页,一些静态文件也不会重新加载,所以我都用 firefox。firefox 对 pdf 在线预览也会缓存,但可以在响应头里写入禁止响应标识就行。
    woshichuanqilz
        10
    woshichuanqilz  
    OP
       2018-02-01 17:25:56 +08:00
    scriptB0y
        11
    scriptB0y  
       2018-02-01 17:34:59 +08:00
    @ipwx 一直很困惑为什么有时候刷新有这三个选项,有时候没有,原来是开发者工具开不开的关系……
    Anakin078
        12
    Anakin078  
       2018-02-01 19:18:45 +08:00
    强制刷新~ Ctrl+F5
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1719 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:52 · PVG 00:52 · LAX 08:52 · JFK 11:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.