代码之家  ›  专栏  ›  技术社区  ›  ptutt

HTTP压缩:一些外部脚本/CSS有时无法正确解压缩

  •  2
  • ptutt  · 技术社区  · 14 年前

    ������í½`I%&/mÊ{JõJ×àt¡`$Ø@ìÁÍæìiG#)«*ÊeVe]f
    

    (实际上它们不能在这里正确显示)

    缓存控制专用

    内容编码gzip

    X-AspNet-2.0.50727版

    通过HttpCompress进行X压缩

    X-Powered-By ASP.NET日期:7月9日,星期五

    这清楚地表明资源是由gzip压缩的。那么客户的泄气方面似乎出了问题?

    我在web.config中添加了以下部分(在适当的位置):

    <sectionGroup name="blowery.web">
      <section name="httpCompress" type="blowery.Web.HttpCompress.SectionHandler, blowery.Web.HttpCompress"/>
    </sectionGroup>
    
    <blowery.web>
        <httpCompress preferredAlgorithm="gzip" compressionLevel="high">
          <excludedMimeTypes>
            <add type="image/jpeg"/>
            <add type="image/png"/>
            <add type="image/gif"/>
          </excludedMimeTypes>
          <excludedPaths>
            <add path="NoCompress.aspx"/>
          </excludedPaths>
        </httpCompress>
    </blowery.web>
    
    <add name="CompressionModule" type="blowery.Web.HttpCompress.HttpModule, blowery.web.HttpCompress"/>
    

    1 回复  |  直到 4 年前
        1
  •  1
  •   Aristos    4 年前

    这是我以前遇到的一个问题,问题是内容长度不正确。为什么不正确?因为它可能是在压缩之前计算出来的。

    我注意到你使用 鼓风机压缩

    @普图特 如果您使用的是共享iis,那么可能已经有了所有现成的压缩集,因此存在一个压缩集而不是另一个压缩集,您只需要删除您的压缩集。如果这是一个问题,那么确定的内容长度是假的,因为在第一次压缩后,第二次是打破它。

    使用此网站 https://www.giftofspeed.com/gzip-test/

    如果不压缩默认情况下,那么你可以做得很容易。在Global.asax上

    protected void Application_BeginRequest(Object sender, EventArgs e)
    {
        string cTheFile = HttpContext.Current.Request.Path;
        string sExtentionOfThisFile = System.IO.Path.GetExtension(cTheFile);
        
        if (sExtentionOfThisFile.Equals(".aspx", StringComparison.InvariantCultureIgnoreCase))
        {
            string acceptEncoding = MyCurrentContent.Request.Headers["Accept-Encoding"].ToLower();;
            
            if (acceptEncoding.Contains("deflate") || acceptEncoding == "*")
            {
                // defalte
                HttpContext.Current.Response.Filter = new DeflateStream(prevUncompressedStream,
                    CompressionMode.Compress);
                HttpContext.Current.Response.AppendHeader("Content-Encoding", "deflate");
            } else if (acceptEncoding.Contains("gzip"))
            {
                // gzip
                HttpContext.Current.Response.Filter = new GZipStream(prevUncompressedStream,
                    CompressionMode.Compress);
                HttpContext.Current.Response.AppendHeader("Content-Encoding", "gzip");
            }       
        }
    }
    

    查找更多示例: http://www.google.com/search?q=Response.Filter+GZipStream

    参考文献: ASP.NET site sometimes freezing up and/or showing odd text at top of the page while loading, on load balanced servers