【发布时间】:2014-03-20 01:21:45
【问题描述】:
我通过 Amazon Cloudfront 提供 JS 和 CSS 文件。到目前为止,我一直在使用自己的服务器运行 Varnish,当我更新任何 JS 或 CSS 文件或使用新版本时,我必须在请求该文件的 URL 参数上增加一个计数器。
所以被包含的文件的 URL 将从 .../file.css?r=1 变为 .../file.css?r=2 并且 Varnish 会认为这是一个新文件,请求它并缓存它并从那时起从缓存中提供它。
使用 Cloudfront,我意识到它不是那样工作的,它仍然提供旧的缓存文件(并且我不断收到 HTTP 响应上的“来自 Cloudfront 的命中”)。
我是否可以为此更改 Cloudfront 的行为?
我能做的任何其他事情并不意味着每次更新文件时实际上都会更改文件名?我也不想通过 Cloudfront 的 API 使用缓存失效。我认为这对我在这里要做的工作来说太多了,而且我每个月可以提出的(免费)请求数量有限。
【问题讨论】:
-
在缓存行为设置中使用“查询字符串转发和缓存”。如果您希望 Cloudfront 在每次有查询参数时向源请求新文件,则将该值设置为“全部转发,基于所有缓存”,或者如果您只希望 Cloudfront 获取,则将值设置为“全部转发,基于白名单缓存”新版本取决于查询参数的白名单。