我们有一个产品发布,由于我们更新了javascript,因此存在问题。客户端有一个旧的缓存版本的javascript文件导致问题。解决方法是让他们刷新浏览器缓存(点击F5),但我试图了解默认情况下缓存javascript的时间。
我没有看到在服务器端设置了缓存控制标头或Expired标头,我在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
答案 0 :(得分:0)
我知道如何添加缓存标头。我们有一个影响许多客户的生产问题。对于大型站点来说,将修复程序迁移到生产环境并不小。我试图找出默认情况下浏览器缓存多长时间,因为如果我们不迁移修复程序,浏览器自然会重新获取较新版本的javascript之前,我们的客户端会存在多长时间的问题。例如,如果是2天,那么在我们没有采取行动的情况下,问题就已经解决了。
似乎答案就在我面前。没有缓存标头,但是下面的标签似乎永远都在说缓存,而不管它之前的no-cache元标记。
<meta http-equiv="expires" content="0">
因此,我们必须进行生产迁移,并为所有javascript添加缓存破解程序以解决问题或继续告诉每个客户端刷新页面。