【发布时间】:2020-07-29 02:59:55
【问题描述】:
我有一个托管在 S3 上并使用 Cloudfront 提供服务的单页应用程序。一切正常,但我试图通过缓存 Cloudfront 上的所有文件来提高应用程序首次加载的性能。现在所有文件都非常快速地提供,除了一个:页面 HTML。只有一个 HTML 文件 (/index.html),每次使用 Cloudfront 上的自定义错误页面无法在源 (S3) 上找到该文件时都会提供该文件。例如,此文件在我的域的根目录上提供。
我设置了自定义错误页面的错误缓存最小 TTL,以将响应缓存 1 天(86400 秒),如图所示。 Cloudfront customer error page settings
然而,这个缓存配置似乎没有任何效果。每次 URL 不存在于源上(并且 S3 返回状态 403)时,响应都是正确的,但 Cloudfront 会在 x-cache 标头上指示 Miss 并且需要大约 500 毫秒的响应时间。如果文件是通过我的域上的路径“/index.html”请求的,Cloudfront 会在 x-cache 标头上指示命中并在 20 毫秒内响应。
index.html 文件的缓存控制标头设置为最大年龄等于 Cloudfront 错误缓存最小 TTL。
是我遗漏了什么还是 Cloudfront 自定义错误页面太慢了?
【问题讨论】:
-
我也遇到了这个问题。我的理论是,因为 S3 正在返回错误页面的动态内容,CloudFront 实际上无法缓存自定义错误页面,因为它每次都在检查源 (S3)。
标签: amazon-web-services amazon-s3 amazon-cloudfront