【问题标题】:Does CloudCDN support the serving of Brotli encoding?CloudCDN 是否支持 Brotli 编码的服务?
【发布时间】:2020-09-17 03:45:09
【问题描述】:

我的公司正在考虑从 AWS 迁移到 GCP。我们希望 CloudCDN 支持的功能之一是 brotli 编码。我们有一个技术栈,可以将我们的 javascript 捆绑到 3 个文件中:

chunk.js
chunk.js.gz
chunk.js.br

如果 CloudCDN 接收到客户端请求标头Accept-Encoding: br, gzip,CloudCDN 是否足够智能以提供 Brotli 文件?此外,它会被缓存吗?如果没有,是否有其他方法可以在 CloudCDN 中实现这一点。

AWS Cloudfront 仅使用 2 个 lamdbas 提供此功能。我认为这是个坏主意。

【问题讨论】:

    标签: encoding compression brotli google-cloud-cdn


    【解决方案1】:

    是的,只要来自源服务器的响应包含 Vary: Accept-Encoding 标头,Cloud CDN 就可以缓存所有 3 种表示并根据客户端的 Accept-Encoding 标头提供正确的一种。更多信息请访问https://cloud.google.com/cdn/docs/caching#vary_headers

    更新:

    我没有意识到您使用 Cloud Storage 存储分区作为来源。不幸的是,Cloud CDN 和 Cloud Storage 都没有根据客户端是否支持 Brotli 将客户端对 /chunk.js 的请求重写为 /chunk.js.br 的功能。我同意这很有用,所以我提交了内部功能请求。

    当 nginx 等源站服务器配置为选择合适的文件时,Cloud CDN 仅在缓存未命中时才需要返回源站服务器。只要源服务器的响应包含 Vary: Accept-Encoding 标头,Cloud CDN 就可以通过将客户端的 Accept-Encoding 请求标头与缓存响应时指定的 Accept-Encoding 值进行比较,直接从边缘提供缓存命中。指定 Accept-Encoding: br, gzip 的客户端将从一个缓存条目提供服务,而指定 Accept-Encoding: gzip 的客户端将从另一个缓存条目提供服务。

    【讨论】:

    • 明确一点,我希望客户端请求 chunk.js 并接收 chunk.js.br。文件名切换是否完全基于惯例? CloudCDN 如何知道从请求的 chunk.js 重写文件名/服务 chunk.js.br。
    • 对不起,我误解了你的问题。 Cloud CDN 不会重写客户端请求中的文件名。通常这样做的方式是源服务器根据 Accept-Encoding 请求标头选择要服务的文件(例如通过 nginx 配置),并包含一个 Vary: Accept-Encoding 响应标头让 CDN 知道。
    • 非常感谢@elving 的帮助。 CloudCDN 不应该只是指向一个 Google Cloud Storage 存储桶,并且应该从边缘为客户端提供一个文件吗?通过对 origin/nginx 进行往返,似乎违背了使用 CloudCDN(edge) 的目的。 CloudCDN 是否在边缘分发 web server/origin/nginx?如果这是听起来不错的情况,如果不是,我仍然不完全理解这一切是如何工作的。对不起,如果我在修改措辞
    • 该内部功能请求是否有任何进展?我发现像 render.com 这样的服务默认提供开箱即用的服务
    • @elving 感谢您的回答,但您知道该内部功能请求是否有任何进展?
    【解决方案2】:

    CloudFront 现在原生支持 Brotli 压缩。如果您使用 S3 作为源(或任何返回未压缩内容的源),CloudFront 可以使用 Brotli 或 Gzip 在边缘自动压缩。您无需创建文件的三个版本或使用 Lambda@Edge。

    https://aws.amazon.com/about-aws/whats-new/2020/09/cloudfront-brotli-compression/

    【讨论】:

      猜你喜欢
      • 2022-01-18
      • 2017-03-27
      • 1970-01-01
      • 2018-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多