【问题标题】:MVC4 bundling GZIP and headersMVC4 捆绑 GZIP 和标头
【发布时间】:2012-08-21 17:25:27
【问题描述】:

我正在使用 Google PageSpeed 和 YSlow 测试我的网站,但我使用 MVC4 包创建的包没有得到

Gzipped(用gzip或deflate压缩资源可以减少通过网络发送的字节数)并且没有

不同:Accept-Encoding 标头(指示代理服务器缓存资源的两个版本:一个是压缩版本,一个是未压缩版本。这有助于避免公共代理无法正确检测 Content-Encoding 标头的问题。)

还有我如何为国际空间站上的整个脚本文件夹添加编码头。 我知道有 HTTP 响应标头,然后添加自定义 HTTP 响应标头,

但这是否适用于整个脚本文件夹和子文件夹以及在名称和值字段中放置的内容。

如何解决。

问候。

【问题讨论】:

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


    【解决方案1】:

    要正确压缩 IIS 上的 JavaScript 文件并使用 GZip 编码提供服务,请将以下内容放入您的 web.config

     <staticContent>
    
          <remove fileExtension=".js" />
          <mimeMap fileExtension=".js" mimeType="text/javascript" />
    
          <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" />
        </staticContent>
    
        <urlCompression doDynamicCompression="true" dynamicCompressionBeforeCache="true" />
        <httpCompression noCompressionForHttp10="false" noCompressionForProxies="false" dynamicCompressionDisableCpuUsage="93" dynamicCompressionEnableCpuUsage="93" staticCompressionDisableCpuUsage="99" staticCompressionEnableCpuUsage="99">
          <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="9" dynamicCompressionLevel="4" />
        </httpCompression>
    </system.webServer>
    

    然后在 MIME 类型中的 ISS 上

    application/x-javascript 更改为 text/javascript

    您现在将在 DevTools 中看到 JS 文件是通过 Content Encoding 列中的 gzip 提供的。

    【讨论】:

    • 非常好的答案... +1
    【解决方案2】:

    好的好的Q,我简单的测试你的问题。请试试这个逻辑:

      public HttpResponseMessage Get(){
    
             var request=Request.CreateResponse(HttpStatusCode.OK);
             request.Content.Headers.Add("Content-Type", "application/x-gzip");
             request.Content.Headers.Add("Content-Encoding", "gzip");
    
        //TODO:Add your logic here...
    
             return request;
        }
    

    【讨论】:

      【解决方案3】:

      确保在 web.config 的 system.webserver 部分设置以下内容

      <urlCompression doDynamicCompression="true"
                          doStaticCompression="true" dynamicCompressionBeforeCache="true" />
          <staticContent>
            <clientCache cacheControlMode="UseMaxAge"
                         cacheControlMaxAge="365.00:00:00" cacheControlCustom="public" />
          </staticContent>
      

      【讨论】:

        【解决方案4】:

        我认为 IIS 动态内容压缩应该至少负责 gzip,甚至可能为您完成所有这些工作,您尝试过此功能吗?

        This msdn article might be helpful

        【讨论】:

        • 我已经尝试过了,但它不适用于捆绑创建的脚本。
        猜你喜欢
        • 2012-10-15
        • 2012-06-28
        • 2012-06-21
        • 1970-01-01
        • 2013-04-02
        • 2012-07-22
        • 1970-01-01
        • 1970-01-01
        • 2013-02-01
        相关资源
        最近更新 更多