最近遇到了一个关于我开发的应用程序的问题,其中应用程序的javascript已更新,但有些客户甚至在12小时后才看到更改。我们目前发送
Cache-Control: max-age=3600;以及我们的回复来获取我们的资源文件(例如JS,CSS,HTML代码段等)。在这种特殊情况下,javascript是相对快速连续两次(以下称为v1,v2)。在v1是最新版本时访问页面的任何用户在部署v2之后都没有正确地重新验证其缓存,即使已经过了3600秒的缓存max-age。我们最终将v1备份(约14小时后),但用户从未真正正确地获得v2。我们在服务器端使用ETag进行未修改的验证,因此在v1和v2之间具有相同文件名的JS文件不应该有任何问题。
我意识到我们应该将
must-revalidate与上面的其他缓存控件一起发送。但是,我试图了解什么会导致各种用户的浏览器即使在初始缓存max-age到期后也不会尝试重新验证。如果没有指定必须重新验证的话,是否有更好的解释说明浏览器将使用陈旧资源的情况?