AWS CloudFront缓存失效问题咨询:单文件与目录路径差异
为什么CloudFront单文件缓存失效没生效,目录路径却可以?
我来帮你拆解这个CloudFront缓存失效的问题——你遇到的情况其实是CloudFront路径匹配规则的典型坑点,咱们一步步说清楚:
核心差异:路径的绝对/相对格式
你执行的两个失效命令,关键区别在于路径是否以斜杠开头:
- 第一个命令用的是
dir/abc.html(相对路径,无起始斜杠),CloudFront根本找不到对应的缓存条目,所以失效操作无效; - 第二个命令用的是
/dir/(绝对路径,带起始斜杠),能匹配到该目录下的所有缓存内容,所以生效了。
CloudFront的缓存路径规则
CloudFront的缓存键(决定缓存条目唯一标识的关键)是从分发根目录开始的绝对路径,也就是说,你网站上的/dir/abc.html文件,在CloudFront缓存里的路径就是带起始斜杠的/dir/abc.html。
如果你省略了开头的斜杠,用dir/abc.html去执行失效,相当于告诉CloudFront“去找一个叫dir/abc.html的缓存条目”,但实际上缓存里根本不存在这个格式的路径——所有缓存条目都是绝对路径格式,所以这个失效命令相当于“无的放矢”,自然没效果。
而/dir/这种带起始斜杠的目录路径,CloudFront会将其识别为目录级的失效,会匹配该目录下的所有缓存文件(包括你要更新的/dir/abc.html),所以能达到你想要的更新效果。
正确的单文件失效命令
如果只想精准失效/dir/abc.html这一个文件,你需要把路径改成带起始斜杠的绝对路径,正确的命令是:
aws cloudfront create-invalidation --distribution-id dfhdhdufhjgh --paths /dir/abc.html
内容的提问来源于stack exchange,提问作者Mukul
相关产品推荐
相关产品推荐

