C# 如何压缩ASP.NET中的特定页面
我有一个web应用程序,在某些页面中我使用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
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");
}
}