我在S3上托管一个静态网站,并使用Cloudfront缓存文件。我有三个文件,分别是:
- index.html(Cache-Control:no-cache)
- app.js(Cache-Control:max-age=63072000,public)
- style.css(Cache-Control:max-age=63072000,public)
我的html文件使用查询字符串参数,每次更新css或js文件时都会更新。我已经配置了S3通过这些参数并验证了它可用于使缓存的资源失效。我的index.html文件如下所示:
<html>
<head>
...
<link rel="stylesheet" href="app.css?v=14113e2c764">
</head>
<body>
...
<script src="app.js?v=14113e2c764"></script>
</body>
</html>
我每天都在推送更新,似乎工作得很好,但第二天早上再推送我的下一个更改时,index.html文件已经过时了。它没有正确的?v=参数,而是旧的!唯一的解决办法是手动使html文件失效。然后一整天都可以正常工作。第二天我又遇到了同样的问题。
这里发生了什么?