我注意到一些浏览器(特别是Firefox和Opera)非常热衷于使用.css和.js文件的缓存副本,即使在浏览器会话之间也是如此。当您更新这些文件之一但用户的浏览器继续使用缓存的副本时,这会导致出现问题。
问题是:迫使用户的浏览器在文件更改后重新加载文件的最优雅的方法是什么?
理想情况下,该解决方案不会强制浏览器在每次访问页面时重新加载文件。我将发布自己的解决方案作为答案,但我很好奇是否有人有更好的解决方案,我将让您决定。
更新:
经过一段时间的讨论后,我发现John Millikin和da5id的建议很有用。事实证明有一个术语:自动版本化。
我在下面发布了一个新答案,该答案是我原来的解决方案和约翰的建议的结合。
SCdF建议的另一个想法是将伪查询字符串附加到文件中。(一些由pi提交的自动使用时间戳作为伪查询字符串的Python代码。)但是,关于浏览器是否将使用查询字符串缓存文件存在一些讨论。(请记住,我们希望浏览器缓存文件并在以后的访问中使用它。我们只希望它在更改后再次获取文件。)
由于尚不清楚假查询字符串会发生什么,因此我不接受该答案。
iframe.contentWindow.location.reload(true)
。请参阅stackoverflow.com/a/22429796/999120的方法(4)-这是关于图像的,但同样适用。
ExpiresActive On ExpiresDefault "modification"
。