JavaScript 默认缓存多长时间

how long is javascript cached by default

本文关键字:长时间 缓存 默认 JavaScript      更新时间:2023-09-26

我们有一个生产版本,由于我们更新的javascript而出现了问题。客户端具有导致问题的 javascript 文件的旧缓存版本。解决方法是让他们刷新浏览器缓存(按 F5),但我试图了解默认情况下 javascript 缓存多长时间。

我没有看到在服务器端设置的缓存控制标头或过期标头,并且在 chrome 的开发人员控制台中看不到这些标头。我确实看到页面上设置了以下元标记。这些元标记会让我相信 JS 没有缓存 - 但我们知道这是因为我们有很多用户报告问题并按 F5 修复它。

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">

所以回到我最初的问题 - 如果我们不设置缓存标头,javascript 默认缓存多长时间。我很抱歉,因为我确定这个问题是在其他地方问的,我似乎找不到具体的答案。以下是我可以看到设置的所有标题:

Accept-Ranges:bytes
Connection:Keep-Alive
Content-Length:157271
Content-Type:application/x-javascript
Date:Tue, 23 Feb 2016 15:37:38 GMT
Keep-Alive:timeout=15, max=500
Last-Modified:Sat, 20 Feb 2016 10:57:45 GMT
Strict-Transport-Security:max-age=31536000; includeSubDomains
X-Content-Type-Options:nosniff

我知道如何添加缓存标头。我们有一个影响许多客户的生产问题。对于大型站点,将修复程序迁移到生产环境可不是一件小事。 我试图找出浏览器默认缓存多长时间,因为如果我们不迁移修复程序,那么在浏览器自然重新获取较新版本的 javascript 之前,这就是我们的客户存在多长时间的问题。例如,如果是 2 天,那么问题已经自行解决,而无需我们采取行动。

似乎答案就在我面前。没有缓存标头,但下面的标签似乎说永远缓存,而不管它前面的无缓存元标记如何。

<meta http-equiv="expires" content="0">

因此,我们必须进行生产迁移,并将缓存破坏程序添加到我们所有的javascript中以解决问题,或者继续告诉每个客户端刷新页面。