0

以下の3つのエントリは、gtmetrix.comレポートからのものです。Amazon S3のこれらのファイルの圧縮パフォーマンスをどのように処理する必要がありますか?S3でgzipを実行する方法を知っています。ただし、以下の3つのファイルは、より制限的な状況を示しています。

mailchimpのcssファイルにアクセスできません。この場合、より良い圧縮パフォーマンスを得る方法はありますか?

論文のテーマを定期的に更新します。これにより、以下に示すcss.cssファイルが変更されます。css.cssという名前を使用する必要があるため、そのファイルをバージョン管理できません。このシナリオを処理するためのテクニックはありますか?

http://www.mysite.com/wp-content/thesis/skins/classic/css.cssを圧縮すると、20.5KiBを節約できます(79%削減)

http://cdn-images.mailchimp.com/embedcode/slim-041711.cssを圧縮すると、1.1KiBを節約できます(60%削減)

http://www.mysite.com/wp-includes/js/comment-reply.min.js?ver=3.5.1を圧縮すると、374Bを節約できます(48%削減)

4

1 に答える 1

1

ええ、これはかなり一般的な質問です。Apacheなどの従来のHTTPデーモンから静的ファイルを提供する場合、コンテンツは実際にはオンザフライで圧縮されmod_deflate、ファイルを透過的にgzipで圧縮し、適切なContent-Encodingヘッダーを設定します。

S3からこれを実行する場合は、ファイルをアップロードする前に手動でgzipで圧縮し(通常はのような名前) 、S3オブジェクトに次のようにcool-stylesheet.gz.cssカスタムプロパティを設定する必要があります。Content-Encoding

ここに画像の説明を入力してください

これは手作業で行うのは面倒な場合があるため、継続的インテグレーションビルドプロセスの一部として実際に自動的に行います。ソース管理のコミット後フックが起動し、いくつかのビルドステップ(これを含む)が実行され、結果のファイルが適切な環境にデプロイされます。

編集:

S3ではなくCloudfrontの問題を説明するつもりだったようです。CloudfrontはCDNであり、エッジの場所にファイルをキャッシュするため、ファイルが変更されたときにファイルの最新バージョンを強制的に再フェッチする必要があります。これを行うには、キャッシュを無効にする方法とファイル名のバージョン管理を使用する方法の2つがあります。

キャッシュの無効化は遅く、非常にコストがかかる可能性があります。1か月あたり最初の1,000件の無効化リクエストの後、その後無効化される10個のファイルごとに1ニッケルの費用がかかります。

より良いオプションは、ファイル名をCloudfrontにプルする前に、一意の識別子を追加してファイル名をバージョン管理することです。通常、ファイルが最後に更新されたときのUnixエポックを使用します。だからcool-stylesheet.gz.cssになりcool-stylesheet_1363872846.gz.cssます。次に、HTMLドキュメントで通常のように参照します。<link rel="stylesheet" type="text/css" href="cool-stylesheet_1363872846.gz.css">これにより、ユーザーが更新されたHTMLドキュメントを開いたときに、Cloudfrontが更新されたファイルをオリジンから再フェッチします。

S3に関して前述したように、これも手動で行うのは面倒な作業です。すべてのファイルの名前を変更し、ソースHTMLドキュメント内のそれらへのすべての参照検索/置換する必要があります。CIビルドプロセスの一部にする方が理にかなっています。ただし、CIサーバーを使用していない場合は、ソースリポジトリのコミットフックを使用してこれを実行できる可能性があります。

于 2013-03-21T02:13:41.417 に答える