关于asp.net网站 gzip压缩 优化问题

wxf809602518 2013-02-22 04:48:13
本人对于优化就是菜鸟,以前从没接触过。求各位大哥帮忙啊, 我用asp.net做的网站 已经发布到ftp上。现在想对网站进行gzip压缩 ,提高浏览速度。由于条件限制不能用IIS进行GZIP压缩,只能写代码啦, 在网上也搜到了代码如下:
public sealed class CompressionModule : IHttpModule
{

void IHttpModule.Dispose()
{
// Nothing to dispose;
}

void IHttpModule.Init(HttpApplication context)
{
if (BlogSettings.Instance.EnableHttpCompression)
{
context.PreRequestHandlerExecute +=
new EventHandler(context_PostReleaseRequestState);
}
}

private const string GZIP = "gzip";
private const string DEFLATE = "deflate";

void context_PostReleaseRequestState(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
if (app.Context.CurrentHandler is System.Web.UI.Page &&
app.Request["HTTP_X_MICROSOFTAJAX"] == null)
{
if (IsEncodingAccepted(DEFLATE))
{
app.Response.Filter =
new DeflateStream(app.Response.Filter,
CompressionMode.Compress);
SetEncoding(DEFLATE);
}
else if (IsEncodingAccepted(GZIP))
{
app.Response.Filter =
new GZipStream(app.Response.Filter,
CompressionMode.Compress);
SetEncoding(GZIP);
}
}
else if (app.Context.Request.Path.Contains("WebResource.axd"))
{
//是.NET自己的文件,这里只是加缓存时间
app.Context.Response.Cache.SetExpires(
DateTime.Now.AddDays(30));
}
}

private static bool IsEncodingAccepted(string encoding)
{
HttpContext context = HttpContext.Current;
return context.Request.Headers["Accept-encoding"] != null &&
context.Request.Headers["Accept-encoding"].Contains(encoding);
}

private static void SetEncoding(string encoding)
{
HttpContext.Current.Response.AppendHeader(
"Content-encoding", encoding);
}

}
但是 却不知道放在网站的什么地方才能生效,要如何建文件,怎样才能让这段代码运行 ,求个问大哥帮忙啊
...全文
1178 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
rayaspnet 2013-02-24
  • 打赏
  • 举报
回复
引用 7 楼 wxf809602518 的回复:
5楼的 大哥,是不是只用在web.config中添加这段代码就可以了吗? 还有没有其他的操作呢?
是.
wxf809602518 2013-02-24
  • 打赏
  • 举报
回复
5楼的 大哥,是不是只用在web.config中添加这段代码就可以了吗? 还有没有其他的操作呢?
wxf809602518 2013-02-24
  • 打赏
  • 举报
回复
谢谢 各位大哥指点啊 ,今天才看到,对我很有帮助。
threenewbee 2013-02-23
  • 打赏
  • 举报
回复
不知道“条件限制”是什么限制,这代码取决于服务器是否允许你使用 IHttpModule,只有IIS7+并且有一定的权限才可以这么做。
rayaspnet 2013-02-23
  • 打赏
  • 举报
回复
引用 楼主 wxf809602518 的回复:
本帖最后由 wxf809602518 于 2013-02-22 18:43:18 编辑 本人对于优化就是菜鸟,以前从没接触过。求各位大哥帮忙啊, 我用asp.net做的网站 已经发布到ftp上。现在想对网站进行gzip压缩 ,提高浏览速度。由于条件限制不能用IIS进行GZIP压缩,只能写代码啦, 在网上也搜到了代码如下: public s……
不要自己写,在配置文件里面加上

<system.webServer>
  <httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
    <dynamicTypes>
      <add mimeType="text/*" enabled="true"/>
      <add mimeType="message/*" enabled="true"/>
      <add mimeType="application/javascript" enabled="true"/>
      <add mimeType="*/*" enabled="false"/>
    </dynamicTypes>
    <staticTypes>
      <add mimeType="text/*" enabled="true"/>
      <add mimeType="message/*" enabled="true"/>
      <add mimeType="application/javascript" enabled="true"/>
      <add mimeType="*/*" enabled="false"/>
    </staticTypes>
  </httpCompression>
  <urlCompression doStaticCompression="true" doDynamicCompression="true"/>
</system.webServer>
菜牛 2013-02-23
  • 打赏
  • 举报
回复
引用 2 楼 caozhy 的回复:
不知道“条件限制”是什么限制,这代码取决于服务器是否允许你使用 IHttpModule,只有IIS7+并且有一定的权限才可以这么做。
没记错的话2003上的IIS6也是可以的。
菜牛 2013-02-23
  • 打赏
  • 举报
回复
没记错的话2003上的IIS6也是可以的。
引用 1 楼 q___p 的回复:
这是个模块 在web.config中修改 在<system.web>中添加 <httpModules> <add name="自己起名" type="程序集.CompressionModule ,程序集"/> </httpModules> 请搜索模块相关知识即可
传递正能量 2013-02-22
  • 打赏
  • 举报
回复
这是个模块 在web.config中修改 在<system.web>中添加 <httpModules> <add name="自己起名" type="程序集.CompressionModule ,程序集"/> </httpModules> 请搜索模块相关知识即可

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧