C# 如何压缩ASP.NET中的特定页面

C# 如何压缩ASP.NET中的特定页面,c#,asp.net,c#-4.0,compression,microsoft-ajax,C#,Asp.net,C# 4.0,Compression,Microsoft Ajax,我有一个web应用程序,在某些页面中我使用MSAjax(脚本管理器、更新面板等)。在这些页面中,我无法使用压缩,因为它与*.axd文件冲突 如何压缩web应用程序中的特定页面?您是否尝试过通过IIS 7进行HTTP压缩(动态和/或静态内容),这将压缩客户端和服务器之间通信的所有数据 我个人会使用HTTP模块来压缩.axd文件 这里有一个例子 我使用Http模块来处理压缩。我无法对我的一个站点使用新的IIS压缩,因为它位于共享主机上,并且它们尚未启用IIS压缩。我还有一个自定义的web.confi

我有一个web应用程序,在某些页面中我使用
MSAjax(脚本管理器、更新面板等)
。在这些页面中,我无法使用压缩,因为它与
*.axd
文件冲突


如何压缩web应用程序中的特定页面?

您是否尝试过通过IIS 7进行HTTP压缩(动态和/或静态内容),这将压缩客户端和服务器之间通信的所有数据


我个人会使用HTTP模块来压缩.axd文件

这里有一个例子


我使用Http模块来处理压缩。我无法对我的一个站点使用新的IIS压缩,因为它位于共享主机上,并且它们尚未启用IIS压缩。我还有一个自定义的web.config部分,可以在其中排除特定的文件路径,如中所示:

如果您想要模块的代码,请告诉我。我也可以发。一个类实际执行压缩,而我使用其他3个类来处理自定义web.config部分

  <RiderDesign>
    <HttpCompressionSettings compressionOn="true">
      <includedFileTypes>
        <add value="text/html"/>
        <add value="text/xhtml"/>
      </includedFileTypes>
      <excludedFilePaths>
        <add value="~/demos/partialpageupdates.aspx"/>
        <add value="~/demos/inlinetextedit.aspx"/>
      </excludedFilePaths>
    </HttpCompressionSettings
 </RiderDesign>

这可能对您有用,因为它接受deflate和gzip压缩

  void Application_PreRequestHandlerExecute(object sender, EventArgs e)
    {
        HttpApplication app = sender as HttpApplication;
        string acceptEncoding = app.Request.Headers["Accept-Encoding"];
        Stream prevUncompressedStream = app.Response.Filter;

        if (!(app.Context.CurrentHandler is System.Web.UI.Page ||
            app.Context.CurrentHandler.GetType().Name == "SyncSessionlessHandler") ||
            app.Request["HTTP_X_MICROSOFTAJAX"] != null)
            return;

        if (acceptEncoding == null || acceptEncoding.Length == 0)
            return;

        acceptEncoding = acceptEncoding.ToLower();

        if (acceptEncoding.Contains("deflate") || acceptEncoding == "*")
        {
            // deflate
            app.Response.Filter = new DeflateStream(prevUncompressedStream,
                CompressionMode.Compress);
            app.Response.AppendHeader("Content-Encoding", "deflate");
        }
        else if (acceptEncoding.Contains("gzip"))
        {
            // gzip
            app.Response.Filter = new GZipStream(prevUncompressedStream,
                CompressionMode.Compress);
            app.Response.AppendHeader("Content-Encoding", "gzip");
        }
    }

看起来你以前也问过同样的问题:-这是我要为你提出的解决问题的方法。Web.cnfig没有
includefiletypes”和
excludedFilePaths`标记。例如,我有50个年龄,其中50个使用ms ajax,无法压缩。在你的例子中,我写了这50页吗
不包括路径
部分?如果我可以启用IIS压缩,它是否与asp.net压缩一样好?当然,web.config没有这些部分。这是一个自定义部分,专门用于处理压缩的自定义http模块。我不知道哪种压缩效果更好。您还可以指定一个目录-例如,我可以知道您使用的HTTP模块吗?您是否将模块用于MS Ajax?是否没有问题?您将此模块用于MS Ajax?我认为它与MS Ajax有问题
  void Application_PreRequestHandlerExecute(object sender, EventArgs e)
    {
        HttpApplication app = sender as HttpApplication;
        string acceptEncoding = app.Request.Headers["Accept-Encoding"];
        Stream prevUncompressedStream = app.Response.Filter;

        if (!(app.Context.CurrentHandler is System.Web.UI.Page ||
            app.Context.CurrentHandler.GetType().Name == "SyncSessionlessHandler") ||
            app.Request["HTTP_X_MICROSOFTAJAX"] != null)
            return;

        if (acceptEncoding == null || acceptEncoding.Length == 0)
            return;

        acceptEncoding = acceptEncoding.ToLower();

        if (acceptEncoding.Contains("deflate") || acceptEncoding == "*")
        {
            // deflate
            app.Response.Filter = new DeflateStream(prevUncompressedStream,
                CompressionMode.Compress);
            app.Response.AppendHeader("Content-Encoding", "deflate");
        }
        else if (acceptEncoding.Contains("gzip"))
        {
            // gzip
            app.Response.Filter = new GZipStream(prevUncompressedStream,
                CompressionMode.Compress);
            app.Response.AppendHeader("Content-Encoding", "gzip");
        }
    }