現在、ホストされている仮想サーバーを使用しています。Asp.Net 3.5 サイトで GZip 圧縮を有効にしたいのですが、どのように開始すればよいですか?
「パックされた」JS ファイルを使用してみましたが、うまくいきません。正しく処理されていないためだと思います...?
現在、ホストされている仮想サーバーを使用しています。Asp.Net 3.5 サイトで GZip 圧縮を有効にしたいのですが、どのように開始すればよいですか?
「パックされた」JS ファイルを使用してみましたが、うまくいきません。正しく処理されていないためだと思います...?
GZIP は IISで処理する必要があります。実行している IIS のバージョンは何ですか?
クライアントは、サーバーに GZiped バージョンを要求する責任があります。サーバーは、リクエストが http 1.1 であることと、Accept-Encoding のヘッダーである gzip の 2 つを探します。これらのヘッダーを探す簡単な方法は、firebugを使用することです
IIS6 - GZip は、iis スナップインで有効にできます。IIS6 を使用した Gzip に関する Microsoft の MSDN トピック
IIS7 - httpCompression xml タグを使用して、web.config で GZip を有効にできますNick Berardi の Getting IIS 7 to Compress JavaScript
JavaScript ファイルを縮小して圧縮することで、空白を削除して変数名を短くすることで、JavaScript の合計サイズを縮小します。
これを行うための私の好ましい方法は、YUI Compressorのような圧縮ツールを使用して、それをビルドプロセスの一部にすることです(縮小後、圧縮率はそれほど高くなりません。または両方を使用できます。ポイントは、すべきではないということです。以下に示すより大きなパフォーマンスの問題を見逃してはいけません)。
IISによる圧縮の主な問題の1つは、すべてのJS/CSSファイルが1つのファイルにパックされないことです。したがって、サイトに7つのJSファイルと20のCSSがある場合(驚くべきことに、これは非常に一般的です)、データを取得するために27のHTTPラウンドトリップが必要になります。これを行うためのHTTPハンドラーを作成することは、共有ホスティングを使用している人にとっては良い考えです。
単純なビルドアルゴリズムは、JS/CSSルートディレクトリにmakeファイルを作成することです。
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.
}
リリースモードでは、ページマスターはsite.jsのみを参照する必要があります
編集:YUIとnantを統合するためのリンクは次のとおりです。
編集:Justin Etheredgeは、SquishItと呼ばれるcss/jsファイルを組み合わせて圧縮するための素晴らしいツールをリリースしました。
次に、IISがこれを構成する場所です。IISを直接変更できない場合は、Accept-Encoding:gzipまたはdeflate設定をチェックするハンドラーをすべての要求に追加できます。次に、SharpZipLibなどを使用して適切な圧縮を行います。ただし、これはすぐに厄介になります。
cssやjsなどの静的ファイルを手動でgzipすることには、ある程度の成功が見られます。HTMLにとを含めstyles.css.gz
、scripts.js.gz
gz拡張機能をgzip圧縮されたテキストのmimetypeにマップするとします(それはそうapplication/x-gzip
ですか?)多くのブラウザ(つまり、Firefox、Safari、多分chrome)はそれをうまく処理します。しかし、一部のブラウザはそうではなく、あなたはそれらを除外しています(リンク、おそらく古いオペラ)。
コードを使用してスクリプトをGzip圧縮することもできます。それが機能する方法は、ASP.NETページを使用して、圧縮ファイルを正しいヘッダーとともに配信することです(このストリームが圧縮されていることをブラウザーに通知します)。GZip圧縮を利用して、(YUIを使用して)縮小し、スクリプトをバンドルする(サーバーへのラウンドトリップを減らす)方法についての記事を書きました。http://www.codeproject.com/KB/customにあります。 -controls / smartinclude.aspx
GZip よりも効率的であるため、同じように「deflate」を使用することを検討します。両方のコードを追加しました。
これをサイトに追加するには、テキスト ファイルを作成し、指定されたコードをコピーしてファイルに貼り付け、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>
私は、StyleManager と呼ばれる、CSS の縮小に便利な小さなサーバー コントロールを使用しています。ボンネットの下で YUI Compressor を使用します。
YUI C を手動で追加するよりも簡単にサイトに追加でき、その使用法は asp.net の ScriptManager によく似ているため、すぐに慣れます。
最も重要なことは、CSS ファイルも結合することです。したがって、10 個の CSS ファイルをダウンロードするのではなく、1 個だけになり、これも圧縮されます。
チェックしてください - gStyleManager.com
前の投稿はaspxページではうまく機能しますが、cssおよびjsファイルでは機能しません。css
圧縮にjs
ファイルを含める秘訣は次のとおりです。
.css
および.js
ファイルのファイル拡張子をとに変更し.css.aspx
ます.js.aspx
<%@ Page ContentType="text/css" %>
およびを挿入します<%@ Page ContentType="text/javascript" %>
.css.aspx
.js.aspx
.css.aspx
と.js.aspx
ファイルの代わりに.css
とファイルを含める.js