我在使用查询字符串数据使 CloudFront 缓存内容失效时遇到问题。
例如,假设我试图使以下内容无效:
http://d114hh0cykwyb0.cloudfront.net/imagesizer.php?h=80&src=/images/foo.jpg
我使用AWS SDK发送失效路径,即: /imagesizer.php?h=80&src=/images/foo.jpg
然后我将进入 AWS 控制台 -> CloudFront -> 分发设置 -> 失效
我看到了我的新无效请求。如果我看到它的“详细信息”,对象路径会显示: /imagesizer.php%3Fh%3D80%26src%3D/images/foo.jpg
因此路径已被编码。但在无效宣告结束后, http://d114hh0cykwyb0.cloudfront.net/imagesizer.php?h=80&src=/images/foo.jpg 保持不变。
我还尝试使用以下路径在 AWS 控制台中使用“创建失效”: /imagesizer.php?h=80&src=/images/foo.jpg
但我收到 XML 解析错误(因为 URL 未编码)。
以前有人处理过此类问题吗?你找到解决办法了吗?
谢谢!
如今答案是肯定的 - CloudFront 确实支持转发查询字符串的失效。以下内容来自CloudFront 开发人员指南 - 失效。
转发查询字符串
如果您将 CloudFront 配置为将查询字符串转发到源,则在使文件失效时必须包含查询字符串,如下所示 如以下示例所示:
/images/image.jpg?parameter1=a /images/image.jpg?parameter1=b
如果客户端请求包含同一文件的五个不同查询字符串,您可以使该文件五次无效,一次为 每个查询字符串,或者您可以在失效中使用 * 通配符 路径,如下例所示:
/images/image.jpg*
使用失效的一个非常简单的方法是使用第三方工具。我个人使用 CloudBerry - > http://www.cloudberrylab.com/