【问题标题】:Flask application not reflecting new JS changesFlask 应用程序不反映新的 JS 更改
【发布时间】:2016-10-08 18:06:58
【问题描述】:

我的 Flask 服务器中有以下代码:

    res = Response(resp, mimetype='text/plain')
    res.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
    res.headers["Pragma"] = "no-cache"
    res.headers["Expires"] = "0"

    return res

在客户端,我有一些 javascript 代码(在文件夹 static/JS/ 中),我在修复错误等时不断地对其进行编辑。但是,当我在常规 chrome 窗口中刷新页面时(即使我终止浏览器并重新启动它),我对 javascript 代码所做的更改(例如添加警报或调试语句)不会执行。这意味着它会继续运行较旧的(缓存副本)。当我使用隐身窗口时,刷新工作正常。有没有办法让常规的浏览器窗口总能获取最新的代码?我担心在生产环境中浏览器会使用缓存副本并导致问题。

【问题讨论】:

  • Ctrl+Shift+R 用于 Chrome。您只需要清除浏览器中的缓存。搜索它。
  • 我不能指望最终用户在我的任何 JS 代码更改时清除缓存。

标签: javascript python caching flask


【解决方案1】:

确保浏览器不缓存文件的一个技巧是在文件更改时更改 url。这可以在不更改文件名的情况下通过附加查询来完成:

<script src="myscript.js?version=7">

或者,甚至更好:

<script src="myscript.js?timestamp=2837482.2456">

您可以创建一个函数来生成带有文件实际时间戳的 URL。这样浏览器就会缓存它,只要它没有改变。

如果您想知道...查询将被忽略。它不影响静态文件。

【讨论】:

    猜你喜欢
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 2019-02-23
    • 2011-01-11
    • 2011-07-27
    • 2010-12-27
    • 2023-03-27
    相关资源
    最近更新 更多