我的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代码所做的更改(例如添加警报或调试语句)也不会执行。这意味着它继续运行较旧的(缓存副本)。使用隐身窗口时,刷新工作正常。是否有一种方法可以使常规浏览器窗口始终可以获取最新代码?我担心在生产环境中,浏览器将使用缓存副本并导致问题。
答案 0 :(得分:0)
确保浏览器不缓存文件的一个技巧是在文件更改时更改URL。这可以在不更改文件名的情况下通过附加查询来完成:
<script src="myscript.js?version=7">
或者,甚至更好:
<script src="myscript.js?timestamp=2837482.2456">
您可以创建一个生成带有文件实际时间戳的URL的函数。这样,只要浏览器没有改变,浏览器就会对其进行缓存。
如果您想知道......查询将被忽略。它不会影响静态文件。