作業イントラネット上のサイトでgzip圧縮を有効にしようとしています。残念ながら、私はIISにアクセスすることはできないので、私が行った変更はweb.configを介して行っています。httpModuleを使用して手動で圧縮を有効にする
サーバーでIIS 6および.NET 2.0が実行されています。
私は得ることはありませんJavaScriptとCSSファイルを除いて、うまく働いた私は、web.configファイルに登録された...
<system.web>
<httpModules>
<add name="EnableCompression" type="EnableCompression"/>
</httpModules>
</system.web>
さて、上記のHttpModuleを
public class EnableCompression : IHttpModule
{
public void Init(HttpApplication application)
{
application.BeginRequest +=
(new EventHandler(this.Application_BeginRequest));
}
private void Application_BeginRequest(Object source, EventArgs e)
{
HttpContext context = HttpContext.Current;
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip");
HttpContext.Current.Response.Cache.VaryByHeaders["Accept-encoding"] = true;
}
}
を追加することで圧縮を有効に圧縮される。私が見つけたことから、.jsと.cssをIIS 6のアプリケーションマッピングに追加する必要がありますが、もちろんそれはできません。
これは明らかにweb.configファイルで行うことができますが、その方法はわかりません。
.jsファイルと.cssファイルの圧縮を有効にするにはどうすればよいですか?
コードには2つのバグがあります。まず、着信要求に 'Accept-Encoding' HTTPヘッダーが設定されているかどうかを確認し、そうであればgzipが許可された値の1つであるかどうかを確認する必要があります(フレームワークはdeflateStreamを使用してdeflateStreamもサポートします。より小さな出力)。第2に、 'VaryByHeaders'の設定は、出力キャッシュを有効にした場合にのみ有効で、指定されたヘッダで出力キャッシュを変更するようにランタイムに指示します。あなたのケースでは、 'Accept-Encoding'の異なる設定(noneを含む)ごとに、同じ圧縮ページの複数のコピーをキャッシュに格納します。 – RickNZ
Thatnks、私はあなたのコメントを組み込むことを忘れないでください – SharpBarb