压缩过滤器+ MVC + Yahoo YSlow

时间:2009-06-03 02:53:04

标签: asp.net asp.net-mvc gzip

我一直在使用Yahoo的YSLOW试图让我的网页在AgentX

更快地运行

我正在使用以下压缩过滤器。当我通过visual studio运行该站点时,YSLOW说所有文件都被压缩了,当我查看实时站点时,我得到一个A,它得到一个E并说我的文件需要被压缩。谁能解释一下?

    public class CompressFilter : ActionFilterAttribute
{
    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);
        }
    }
}

2 个答案:

答案 0 :(得分:2)

我在我的网站上使用相同的机制:

http://www.avantprime.com/articles/view-article/7/compress-httpresponse-for-your-controller-actions-using-attributes

我建议使用fiddler查看您的实时网站的响应是否实际压缩,然后您可以确定YSlow或您的代码是否存在问题。

我建议您同时运行google pagespeed http://code.google.com/speed/page-speed/。这与YSlow的工作相同,但谷歌制作。某些事情的算法不同。

DaTribe

答案 1 :(得分:1)

您是否在IIS 6上运行Production?也许这可以提供帮助。 ASP.NET MVC compression options in IIS6