静的コンテンツのみを提供するサイトのIIS 7.5最適化


21

スタック交換サイトが使用するhttp://sstatic.net/サイトと同様に、Webアプリケーションの静的コンテンツを提供するためのCookieフリードメインを設定しようとしています。

私の質問は、そのようなドメインのIIS 7.5セットアップに対してどのような最適化を行うことができるかということです。たとえば、静的コンテンツの提供以外には一切責任を負わないので、ASP.NET統合を無効にすることはこのサイトにとって良い動きでしょうか?

このようなサイトをIIS 7.5でセットアップする際の提案や参照は大歓迎です。

編集

明確にするために、これはサーバー上の唯一のサイトではないため、推奨される最適化はサーバーレベルの構成ではなくサイトレベルを対象とする必要があります。

回答:


18

これにはいくつかの考慮事項があり、IISで処理されるもの(HTTP圧縮、ヘッダーfxのキャッシング)、および構築プロセス中/展開前に処理されるもの(JavascriptおよびCSSファイルの連結と空白の縮小など)があります。

そのため、一部のビルドとリリースの方法に依存するため、1つの回答で完全な要約を提供するのは少し難しいです。高レベルの手順:

  • このサイトは、Webアプリケーションに関連付けられていない新しいドメインを使用しているため、「クッキーレス」です。ドメインのCookieを設定していないため(fx .NETアプリケーションコードを使用)、「cookieless」になります。

  • あなたは必要があります絶対に 静的なテキストコンテンツのHTTP圧縮を有効なJavascriptとCSSなど。

  • 私は最高のIIS管理者ではありませんが、私が知る限り、基本的な "Webサーバー(IIS)"サーバーロールに関連付けられている既定のIISコンポーネントのみが必要です。

  • 静的コンテンツの長いキャッシュヘッダーを絶対に有効にする必要があります。一般的な推奨事項は31日間ですが、それより高くまたは低く設定できます。キャッシュヘッダーが長い静的コンテンツを提供する場合、クライアントが古いキャッシュコンテンツを再利用しないように、ファイルを変更する場合はURLを変更する必要があります。

  • HTTPキープアライブ有効にする必要があります(キャッシュヘッダーと同じドキュメント)。

これに加えて、JavascriptやCSSを圧縮するホワイトスペース理想的にはPNGの圧縮など、展開前のタスクがあります。これは、開発ツールとビルドサイクルがどのように進むかを決定するのに役立ちます。

完了したら、YSlowを有効にして静的サーバーからいくつかのファイルをダウンロードしてみてください。私はそれを見つける「クラシックV2」のルールセットは、私はこのYSlowのルールセットに対するあなたのスコアをチェックすることをお勧めので、努力のために最も大きな影響を与えます。

「クラシックV2」ルールセットのうち、これらのルールは静的サーバーIISインスタンスとコンテンツにきれいに適用されます。

3. Add an Expires or a Cache-Control Header
4. Gzip Components
10. Minify JavaScript and CSS
11. Avoid Redirects
13. Configure ETags
19. Use Cookie-Free Domains for Components
22. Make favicon.ico Small and Cacheable

あなたのコメントをありがとう:私はすでにあなたが指摘した生産前の考慮事項の世話をしました。私が本当に望んでいるのは、IIS構成の核心です。静的コンテンツのみであるため、httpパイプラインなどから多くのものを削除できると思います。
DanP

1
@DanP:IISのセットアップにはそれほど多くの作業はありません。マイクロソフトは、「既定でセキュリティで保護された」最小限の構成で出荷できるようになりました。基本的なサーバーロールの一部であるIISコンポーネントを削除することによるパフォーマンスの最適化は、私見の時期尚早な最適化です。静的ファイルの提供は通常、サーバー負荷が非常に低いため、パフォーマンスの向上に見合う価値がないことはほぼ保証できます。エンドユーザーのパフォーマンスにとって、重要な部分はHTTPセマンティクスを正しくすることです。上記のドキュメントに従って、ヘッダー、キャッシュ、キープアライブをキャッシュします。
ジェスパーM

デフォルトは静的ファイルの提供用に設計されています-Webサーバーの役割を追加するだけで、静的ファイルを提供するための最小限のパイプラインが設定されます。したがって、パイプラインを最小限に抑えるために、他のものをインストールしないでください!
-TristanK

@TristanK:私はもっと具体的にすべきだと思います...これはIISサーバー上の唯一のサイトではないため、サーバーレベルではなくサイトレベルで最適化を行う必要があります。
-DanP

ええ、それはちょっと重要な情報です。これが選択したパスであると判断した場合、a)比較する新しいパスをインストールする、b)削除するモジュール/ハンドラー(デフォルトのインストールの一部ではない)をprecondition = "でマークするAppPoolName!= StaticPool "(構文が逆になっている場合があります)。指定されたアプリプールにモジュールを含める/除外するのは、これでほぼ完了です。
TristanK

9

あります、非常に興味深い書き込みここまで誰かが静的なファイルを提供するためにIISを使用しています。主に、IISファイルのキャッシュ設定を調整してディスクアクティビティを制限することに集中しています(これが彼のボトルネックでした)。彼は、パフォーマンスが20倍向上したと言います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.