私のウェブサイトは視覚化の静的なブログであり、AWS S3経由で提供しています。
一部の視覚化では、1メガバイトから20メガバイトの範囲の大きなCSVを使用します。
ファイルを自動的にgzipするようにCloudfrontを設定しましたが、何らかの理由で最大サイズは10メガバイトです。
その結果、20メガバイトのCSVに依存するページは、Cloudfrontがgzip圧縮していないため、ロードに約5秒かかります。
確認しましたが、このファイルがgzip圧縮された場合、約2メガバイトになります。
Cloudfrontが10メガバイトを超えるファイルをgzipしない理由はありますか、それともこのファイルの圧縮バージョンをあまり手間をかけずに自動的に提供するために使用できる回避策がありますか?
これは設計上の制限です。
ファイルサイズは1,000〜10,000,000バイトである必要があります。
https://docs.aws.Amazon.com/AmazonCloudFront/latest/DeveloperGuide/ServingCompressedFiles.html
ファイルの圧縮はリソースを大量に消費するため、CloudFrontの設計者は、CloudFrontがリソースの圧縮にオンザフライで費やすファイルのサイズに上限を設けました。
「自動」回避策はありません。
ファイルがこれほど大きく、圧縮可能である場合は、ストレージコストを削減するために、とにかくS3で圧縮して保存することが重要です。
gzip -9
を使用してファイルをGzipします(実際にはCloudFrontによって生成されるファイルよりもわずかに小さいファイルになる場合があります-gzipにはさまざまな圧縮レベルがあり、-9
が最も積極的であり、CloudFront文書化されているように見えます)、.gz
拡張子を削除し、ファイルをS3にアップロードし、アップロードメタデータでContent-Encoding: gzip
を設定します。
私のウェブサイトは静的なブログです
サイトは静的であるため、 s3_website
の優れた候補です。アップロード前にファイルをローカルで自動的にgzipし、CloudFrontでコンテンツタイプとキャッシュ無効化の設定も処理します。一度セットアップすれば「簡単」になりますので、強くお勧めします。また、無料でオープンソースです。
実行するにはRubyとJavaの両方がインストールされている必要があります。
はじめに、S3バケットに使用するサンプル構成ファイルs3_website.yml
を以下に示します。HTTP/ 2が有効なHTTPS経由で提供されるCloudfront配信の静的サイト:
# S3 Credentials
s3_id: <redacted>
s3_secret: <redacted>
# Site URL
s3_bucket: www.example.com
# Config options
s3_endpoint: eu-west-1
index_document: index.html
cache_control:
"assets/*": public, no-transform, max-age=1209600, s-maxage=1209600
"*": no-cache, no-store
gzip:
- .html
- .css
- .js
- .ico
- .svg
# CloudFront
cloudfront_distribution_id: AABBCC123456
cloudfront_wildcard_invalidation: true
cloudfront_invalidate_root: true
cloudfront_distribution_config:
default_cache_behavior:
min_ttl: <%= 60 * 60 * 24 %>
http_version: http2