使文件失效时的需知事项 - Amazon CloudFront
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使文件失效时的需知事项

指定要使其失效的文件时,请参考以下信息:

区分大小写

失效路径区分大小写。例如,/images/image.jpg/images/Image.jpg 指定两个不同的文件。

使用 Lambda 函数更改 URI

如果您的 CloudFront 分配在发生查看器请求事件时触发 Lambda 函数,并且该函数更改请求的文件的 URI,建议您使这两个 URI 失效,以便从 CloudFront 边缘缓存中删除该文件:

  • 查看器请求中的 URI

  • 函数进行更改后的 URI

例 示例

假设您的 Lambda 函数将某个文件的 URI 从:

https://d111111abcdef8.cloudfront.net/index.html

更改为包含语言目录的 URI:

https://d111111abcdef8.cloudfront.net/en/index.html

要使该文件失效,您必须指定以下路径:

  • /index.html

  • /en/index.html

有关更多信息,请参阅 Invalidation paths

默认根对象

要使默认根对象(文件)失效,请以您为任何其他文件指定路径相同的方式指定路径。有关更多信息,请参阅 原定设置根对象的工作原理

转发 Cookie

如果您将 CloudFront 配置为将 Cookie 转发到您的源,CloudFront 边缘缓存可能会包含文件的多个版本。当您使文件失效之后,CloudFront 会使文件的所有缓存版本失效,不论其关联的 Cookie 如何。您无法根据关联的 Cookie 选择性地使一些版本失效,而使另一些版本不失效。有关更多信息,请参阅 根据 Cookie 缓存内容

转发标头

如果您将 CloudFront 配置为将标头列表转发到源并基于标头的值进行缓存,CloudFront 边缘缓存可能会包含文件的多个版本。当您使文件失效之后,CloudFront 会使文件的所有缓存版本失效,而不论标头值如何。您无法根据标头值选择性地使一些版本失效,而使另一些版本不失效。(如果您将 CloudFront 配置为将所有标头转发到源,则 CloudFront 不会缓存您的文件。) 有关更多信息,请参阅 根据请求标头缓存内容

转发查询字符串

如果您将 CloudFront 配置为将查询字符串转发到您的源,在使文件失效时,必须包括查询字符串,如下例中所示:

  • /images/image.jpg?parameter1=a

  • /images/image.jpg?parameter1=b

如果客户端请求包括针对同一个文件的五个不同查询字符串,您可以使文件失效五次(每个查询字符串一次),或者您可以在失效路径中使用 * 通配符,如下例中所示:

/images/image.jpg*

有关在失效路径中使用通配符的更多信息,请参阅 Invalidation paths

有关查询字符串的更多信息,请参阅 根据查询字符串参数缓存内容

要确定哪个查询字符串正在使用中,您可启用 CloudFront 日志记录。有关更多信息,请参阅 配置和使用标准日志(访问日志)

允许的最大值

有关允许的最大失效次数的信息,请参阅并发失效请求最大值

Microsoft Smooth Streaming 文件

为对应的缓存行为启用 Smooth Streaming 时,您不能使 Microsoft Smooth Streaming 格式的媒体文件失效。

路径中的非 ASCII 或不安全字符

如果路径包含非 ASCII 字符或 RFC 1738 中定义的不安全字符,请对这些字符进行 URL 编码。切勿对路径中的任何其他字符进行 URL 编码,否则,CloudFront 将不会使已更新文件的旧版本失效。

失效路径

路径是相对于分配的。例如,要使 https://d111111abcdef8.cloudfront.net/images/image2.jpg 处的对象失效,您可指定 /images/image2.jpg

注意

CloudFront 控制台中,您可以省略路径中的前导斜杠,如下所示:images/image2.jpg。在直接使用 CloudFront API 时,失效路径必须以前导斜杠开头。

您还可以使用 * 通配符使多个文件同时失效。* 将替换 0 个或多个字符,必须是失效路径中最后的字符。

如果您使用 Amazon Command Line Interface(Amazon CLI)使文件失效,并且指定一个包含 * 通配符的路径,则必须使用引号(")将路径引起来,例如 "/*"

例 示例:使路径失效
  • 使目录中的所有文件失效:

    /directory-path/*

  • 使目录、其所有子目录以及该目录和子目录中的所有文件失效:

    /directory-path*

  • 使具有相同名称但文件扩展名不同的所有文件失效 (例如 logo.jpg、logo.png 和 logo.gif):

    /directory-path/file-name.*

  • 使目录中文件名以相同字符开头的所有文件失效 (例如 HLS 格式的视频的所有文件) 而不论扩展名如何:

    /directory-path/initial-characters-in-file-name*

  • 当您将 CloudFront 配置为基于查询字符串参数进行缓存并且希望使某个文件的所有版本失效时:

    /directory-path/file-name.file-name-extension*

  • 使分配中的所有文件失效:

    /*

路径的长度上限是 4000 个字符。您不能在路径内使用通配符,只能在路径终点处添加通配符。

有关使用 Lambda 函数更改 URI 时使文件失效的信息,请参阅Changing the URI Using a Lambda Function

如果失效路径为目录且您对指定目录的方法尚未标准化 (带或不带尾部斜杠 /),建议您使带和不带尾部斜杠的目录均失效,例如,/images/images/

已签名的 URL

如果您正在使用签名 URL,可以通过在问号 (?) 前仅包括部分 URL 来使文件失效。