将文件保留在云端边缘,但强制为浏览器重新缓存

Keep file in cloudfront edge but force recaching for browser

我正在寻找一种让客户端停止缓存文件但始终从 CloudFront 请求它的方法。搜索总是会产生与清除 CloudFront 缓存相关的内容。

就我而言,我有一个指向我的应用程序的 CF 分布。每当我想从 CloudFront 中清除某些内容时,我都会使用失效请求。所以 origin 和 CF 之间的缓存行为是受控的。但是,我想强制浏览器停止为资源保留任何类型的缓存。如果我 return 来自我的源的缓存 header,它看起来会改变 CF 和 Origin 之间的缓存行为。

如何在客户端和 CF 之间实现不同的缓存行为?

您可以控制请求文件的时间吗?用例是什么?

如果您想完全禁用缓存,只需在 origin 中设置适当的 headers。如果你想在 Cloudfront 中缓存 origin,而不是在客户端中,你可以使用 Lambda@Edge 修改 Cloudfront 中的 headers。

如果它是您作为自己网站的一部分提供的资产,例如一个 javascript 文件,那么您可以简单地向文件名添加一个唯一的哈希值。您服务的不是 app.js,而是 app-52638308.js,当您更新文件时,数字会发生变化。文件本身总是被缓存,不需要失效。