我希望能够为由Google Cloud Storage托管的静态资产支持Brotli和Gzip编码。为此,我想先对文件进行编码,然后再将其上传为<filename>
,<filename>.gz
和<filename>.br
。问题是,我找不到将Accept-Encoding
的请求重定向到正确文件的方法。
我已经研究过使用:
假设存储桶example-bucket
包含以下文件:
library.js
library.js.gz
library.js.br
例子1
GET http://storage.googleapis.com/example-bucket/library.js
Accept-Encoding: gzip, deflate, br
Content-Encoding: br
<Contents of http://storage.googleapis.com/example-bucket/library.js.br>
例子2
GET http://storage.googleapis.com/example-bucket/library.js
Accept-Encoding: gzip, deflate
Content-Encoding: gzip
<Contents of http://storage.googleapis.com/example-bucket/library.js.gz>
有没有一种方法可以简单,高效且具有成本效益地完成上述任务?我意识到可以通过App Engine托管我自己的服务器,并让它负责将请求路由到存储桶,但这是唯一的方法吗?
答案 0 :(得分:0)
Lambda @ edge是一种实现方法,但是简单的方法是将CloudFront上的Accept-encoding标头列入白名单,以便CloudFront可以将其传递给Origin,您可以在Origin上进行配置以基于Accept-encoding来提供文件标头。
如果您打算使用Lambda @ edge,我建议您使用Origin请求功能。 1.将Accept-encoding标头列入白名单 2.Origin request函数读取报头值并更改请求URI路径。