【发布时间】:2013-09-17 10:02:40
【问题描述】:
我在 S3 中托管一个静态网站并使用 Cloudfront 来缓存文件。我基本上有 3 个带有以下标题的文件:
- index.html(缓存控制:无缓存)
- app.js(缓存控制:max-age=63072000,公共)
- style.css(缓存控制:max-age=63072000,公共)
我的 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 文件无效。然后在一天的剩余时间里一切正常。第二天我又遇到了同样的问题。
这是怎么回事?
【问题讨论】:
标签: caching amazon-web-services amazon-s3 amazon-cloudfront