Skip to main content
 首页 » 编程设计

Python Flask 强制重新加载缓存的 JS 文件

2025年05月04日26kenshinobiy

我正在使用以下代码将我的静态文件缓存在我的 flask 应用程序上,该应用程序托管在 heroku 上:

# cache control 
@app.after_request 
def add_header(response): 
    # rule so it will only affect static files 
    rule = request.path 
    if "static" in rule: 
        response.cache_control.max_age = 1000000 
        return response 
    else: 
        return response 

它工作正常。

但现在我做了一些更改,我需要站点加载新文件。 如果我在我已经打开过的常规浏览器中打开该网站,它会加载旧文件(因为它们已被缓存)。

在隐身模式下或按 ctrl+f5 = 加载新文件。问题是普通用户不会按 ctrl+f5 或使用隐身模式。

请您参考如下方法:

正如@mpf82 所建议的那样,您可以简单地将版本或其他内容作为查询字符串参数添加到要重新加载的文件中。

如果文件名更改,浏览器将不再缓存旧文件。

在 url_for 中未知的 flask 变量作为查询字符串处理,因此您只需选择一个未知的变量,例如version并在那里添加一个版本号,f.e. 12052017 :

<script type=text/javascript src="{{ url_for('static', filename='js/main.js', version='12052017') }}"></script> 

就是这样,结果:

<script type=text/javascript src="/static/js/main.js?version=12052017"></script>