MVCでのこのサーバー応答ストリーム圧縮に関する疑問があります。実際に私自身のアクションフィルタ属性を使用して圧縮しています。IIS6でMVC3を使用したGzip圧縮
HomeControllerのHomeControllerの "Home"アクションにこのCompressFilterを添付してホームページ全体をロードしますが、firebugをチェックするとcontent-encoding:gzipは表示されません。サイズが18KByteでも大きすぎます。 URLはhttp://goo.gl/5v5yDであり、これはリクエスト/レスポンスヘッダーです:
Response headers
-----------------
Date Sat, 17 Mar 2012 18:58:49 GMT
Server Microsoft-IIS/6.0
X-Powered-By ASP.NET
X-AspNet-Version 4.0.30319
X-AspNetMvc-Version 3.0
Cache-Control private, max-age=43200
Expires Sun, 18 Mar 2012 06:58:48 GMT
Last-Modified Sat, 17 Mar 2012 18:58:48 GMT
Content-Type text/html; charset=utf-8
Transfer-Encoding chunked
Request headers
-----------------
User-Agent Mozilla/5.0 (Windows NT 6.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1
Accept text/html,application/xhtml+xml,application/xml;q=0.9,q=0.8
Accept-Language es-es,es;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding gzip, deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection keep-alive
Cookie __utma=72740111.1981468378.1331490472.1331490472.1331490472.1; __utmz=72740111.1331490472.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
は、これは私の圧縮フィルタのコードです:圧縮に機能しない理由
public class CompressionFilter : ActionFilterAttribute
{
const CompressionMode compress = CompressionMode.Compress;
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpRequestBase request = filterContext.HttpContext.Request;
string acceptEncoding = request.Headers["Accept-Encoding"];
if (string.IsNullOrEmpty(acceptEncoding)) return;
acceptEncoding = acceptEncoding.ToUpperInvariant();
HttpResponseBase response = filterContext.HttpContext.Response;
if (acceptEncoding.Contains("GZIP"))
{
response.AppendHeader("Content-encoding", "gzip");
response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
}
else if (acceptEncoding.Contains("DEFLATE"))
{
response.AppendHeader("Content-encoding", "deflate");
response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
}
}
}
あなたは知っていますか? ActionFilterの代わりにHttpFilterを使用してレスポンスを圧縮しようとする方が良いかもしれないと思っています。
あなたは組み込みのIISない理由圧縮機能? – tugberk
原因私はIIS 6を使用しています。私はそれがないと思いますよね?おかげさまで – Jose3d