Cloudfront/S3 とそれらが何をしているのかは言うまでもなく、ヘッダー、キャッシング、カール全般について非常に暫定的な理解があります。
現在、cache-control max-age 値を設定するための originResponse を持つ Lambda Edge スクリプトがあります。content-type のケースを含むスイッチを使用して、それに基づいて異なる値を割り当て、すべてのケースが見つからない場合はデフォルトを割り当てます。
コンテンツを試してみるcurl -I
と、予想される最大年齢で返されますが、ブラウザーを使用するcurl -I --compressed
か、ブラウザーから調べると、代わりにすべての設定がスイッチのデフォルト値に表示されます。
それが圧縮に関連していることは理解していると思いますが、それは私の限りであり、そうでなければこれに対処する方法について完全に迷っています。
リクエスト ヘッダーにはaccept-encoding: gzip, ...
がありますが、どのコンテンツにも のレスポンス ヘッダーはありませんcontent-encoding: gzip
。Cloudfront が適切な場合にそのヘッダー自体を自動的に設定するかどうかはわかりません — もしそうなら、gzip 以外の別の形式でコンテンツを「圧縮」できますか? content-encoding
ヘッダーがないと奇妙になりますか? これは私の問題にも関係していますか?
今のところ、この質問の意味がほとんどないことをもう一度お詫びしたい.
タイトルは本当に私の質問を簡潔にまとめたものです。--compressed
ない場合と同じ max-ageを表示する curl 呼び出しを行う方法を理解しようとしています。
編集:現在、S3(?)がMIMEコンテンツタイプをbinary/octet-stream
.woff2フォントなどに割り当てる問題もあり、私も取り組んでいます。これらの問題がどのように関連しているかはわかりません。また、タイプの再割り当てやオブジェクトの再構築 (それが問題である場合) がスイッチの失敗を引き起こしている可能性があるかどうかはわかりません。しかし、そうは言っても、元の質問のコンテンツタイプは期待どおりのものを示しているため、なぜデフォルトに達しているのかわかりません。
if (headers['content-type'] && undefined === headers['cache-control']) {
switch (headers['content-type'][0].value) {
case 'image/jpg':
setHeader('Cache-Control', 'public, max-age=2592000') // ← "curl -I" shows this
break
...
default:
setHeader('Cache-Control', 'public, max-age=3600') // ← "curl -I --compressed" shows this
break
編集 2 :コメントでもう少しコンテキストを確認するために、最初にこの質問をredditに投稿しました。