Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Firebug页面速度警告:启用压缩_C#_Asp.net_Asp.net Mvc_Compression_Asp.net Mvc 4 - Fatal编程技术网

C# Firebug页面速度警告:启用压缩

C# Firebug页面速度警告:启用压缩,c#,asp.net,asp.net-mvc,compression,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Compression,Asp.net Mvc 4,我正在做一些挑剔的seo,我担心firebug显示我的捆绑和缩小的css文件没有被压缩,我正在使用动作过滤器附加gzip头,但我不知道为什么它不适用于缩小/捆绑的css和js文件 以下是过滤器: public class CompressFilter : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext)

我正在做一些挑剔的seo,我担心firebug显示我的捆绑和缩小的css文件没有被压缩,我正在使用动作过滤器附加gzip头,但我不知道为什么它不适用于缩小/捆绑的css和js文件

以下是过滤器:

  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);
            }

            response.AppendHeader("Connection", "keep-alive");
        }
    }
我在应用程序_Start()中注册它,这样我就不必在每个控制器上都注册它:

GlobalFilters.Filters.Add(new CompressFilter());

RegisterGlobalFilters(GlobalFilters.Filters);
我甚至在配置中有这个:

<urlCompression doStaticCompression="true" doDynamicCompression="true" />


标题对于视图是正确的,但是对于css和js则没有。。如何修复此问题?

如果您不习惯使用IIS 7压缩,则无需使用压缩过滤器,urlCompression设置应该足够了。如果您的css是通过ScriptResourceHandler提供的,那么您也应该为此设置压缩(注意,在本例中,缓存被启用为):


...
...

需要注意的是,ISA代理服务器默认情况下会将gzip从Accept Encoding请求头中删除,这样ISA就可以扫描内容中的恶意数据,也许其他代理/防火墙软件也会这样做。

我试过你的代码,但不幸的是,它似乎不起作用,可能是因为脚本和css被mvc4缩小/捆绑了。对不起,我忽略了MVC4标记,也许,我没有使用MVC4
<configuration>
  ...
  <system.web.extensions>
    <scripting>
      <scriptResourceHandler enableCompression="true" enableCaching="true"/>
    </scripting>
  </system.web.extensions>
  ...
</configuration>