現在、ホストされているVirtual Server上で、私のAsp.Net 3.5サイトでGZip圧縮を有効にしたいのですが、どのように起動するのですか?Asp.Netを使用したCSS/JS GZip圧縮
私は「パックされた」JSファイルを使用しようとしましたが、動作しません。正しく処理されないためです。
現在、ホストされているVirtual Server上で、私のAsp.Net 3.5サイトでGZip圧縮を有効にしたいのですが、どのように起動するのですか?Asp.Netを使用したCSS/JS GZip圧縮
私は「パックされた」JSファイルを使用しようとしましたが、動作しません。正しく処理されないためです。
GZIPはIISで処理する必要があります。実行しているIISのバージョンは?
クライアントは、サーバにGZipedバージョンを要求します。サーバーは2つのものを探します。要求はhttp 1.1で、Accept-Encoding:gzipのヘッダーです。これらのヘッダーを簡単に検索する方法は、使用することです。firebug
IIS6 - GZipはiisスナップインで有効にすることができます。 Microsofts MSDN Topic On Gzip With IIS6
IIS7 - gzipはあなたの空白を削除して、変数名を短くしてJavaScriptの合計サイズを小さくする、JavaScriptファイルを縮小化して梱包することによりhttpCompression xmlタグNick Berardi's Getting IIS 7 to Compress JavaScript
を使用してweb.configで有効にすることができます。
IISはこれを設定する場所です。 IISを直接変更できない場合は、Accept-Encoding:gzipまたはdeflateの設定をチェックするすべての要求にハンドラを追加できます。次に、SharpZipLibのようなものを使って適切な圧縮を行います。しかし、これはすぐにkludgeyを取得します。
cssやjsのような静的ファイルを手動でgzipすることで、いくつかの成功は限られています。あなたのhtmlにstyles.css.gz
とscripts.js.gz
を含めると、gz拡張子をgzippedテキストのmimetypeにマップすると(多くはapplication/x-gzip
ですか?)、多くのブラウザ(Firefox、Safari、多分Chrome)がうまく処理できます。しかし、一部のブラウザでは表示されない場合があります(リンク、おそらく古いオペラ)。
これを行うには、YUI Compressorのような圧縮ツールを使用し、ビルドプロセスの一部にすることが望ましいです(圧縮率がそれほど高くないか、両方を使用できます)。下記の大きなパフォーマンスの問題を見逃してはいけません)。
IISによる圧縮の主な問題の1つは、すべてのJS/CSSファイルを1つのファイルにまとめないということです。あなたのサイトに7個のJSファイルと20個のCSSがある場合(驚くべきことに、これは非常に一般的です)、データを取得するために27回のHTTPラウンドトリップが必要になります。これを行うためのHTTPハンドラを書くことは、共有ホスティングを持つ人にとっては良い考えです。
簡単なビルドALGOは、リリースモードでは、ページのマスターのみsite.js
編集を参照する必要があり
If(build.config == release) {
Add your js file in order to the make files.
e.g. jQuery.js jQuery.form.js jQuery.container.js custom.js
Split and pass it as params to YUI
Compress
O/P to site.js
Delete all the above files.
}
はJS/CSSのルートディレクトリにファイルを作る持っているだろう:YUIとnantを統合するには、linkがあります。
を編集:Justin Etheredgeは、SquishItというcss/jsファイルを結合して圧縮する素晴らしいツールをリリースしました。
スクリプトをGZipするコードを使用することもできます。それが動作する方法は、ASP.NETページを使用して、圧縮されたファイルを正しいヘッダー(ブラウザーにこのストリームが圧縮されていることを伝える)と一緒に配信することです。私はGZip圧縮を利用して(YUIを使用して)細分化(YUIを使用)し、スクリプトをバンドルする方法(サーバーへのラウンドトリップが少ない)を書いています。http://www.codeproject.com/KB/custom-controls/smartinclude.aspx
私は、 StyleManagerと呼ばれるCSSの縮小のためのサーバーコントロール。 YUIコンプレッサーを使用しています。
手動でYUI Cを追加するよりも簡単にサイトに追加することができます。その使い方はasp.netのScriptManagerとよく似ていますので、使い慣れています。
最も重要なのは、CSSファイルも結合していることです。だからではなく、それだけで1になるだろうダウンロードする10個のCSSファイルのように持つのも圧縮されるなど
はそれをチェックアウト - gStyleManager.com
を私はそれがあるのと同じため、「デフレート」を使用して検討しますGzipよりも効率的です。私は両方のコードを追加しました。
これをサイトに追加するには、テキストファイルを作成し、必要なコードをファイルにコピーして、Global.asaxとして保存します。これで、このファイルをサイトのルートに追加します。
<%@ Application Language="C#" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.IO.Compression" %>
<script runat="server">
void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
HttpApplication app = sender as HttpApplication;
string acceptEncoding = app.Request.Headers["Accept-Encoding"];
Stream prevUncompressedStream = app.Response.Filter;
if (!(app.Context.CurrentHandler is Page ||
app.Context.CurrentHandler.GetType().Name == "SyncSessionlessHandler") ||
app.Request["HTTP_X_MICROSOFTAJAX"] != null)
return;
if (acceptEncoding == null || acceptEncoding.Length == 0)
return;
acceptEncoding = acceptEncoding.ToLower();
if (acceptEncoding.Contains("deflate") || acceptEncoding == "*")
{
// defalte
app.Response.Filter = new DeflateStream(prevUncompressedStream,
CompressionMode.Compress);
app.Response.AppendHeader("Content-Encoding", "deflate");
}
else if (acceptEncoding.Contains("gzip"))
{
// gzip
app.Response.Filter = new GZipStream(prevUncompressedStream,
CompressionMode.Compress);
app.Response.AppendHeader("Content-Encoding", "gzip");
}
}
</script>
以前の投稿は、aspxページではうまく動作しますが、cssやjsファイルではうまく動作しません。圧縮にcss
とjs
ファイルをインクルードするトリックですへ:
.css.aspx
に変更し、あなたの.css
と.js
ファイルのファイル拡張子をして.js.aspx
.css.aspx
と.js.aspx
ファイル<%@ Page ContentType="text/css" %>
と<%@ Page ContentType="text/javascript" %>
を挿入します.css
と.js
ファイルの代わりに.css.aspx
と.js.aspx
ファイルをページに含める
IIS6のウォークスルー:http://engineering.leads360.com/post/9301650692/http-compression-gzip-on-iis-6 –