关于asp.net网站 gzip压缩 优化问题
本帖最后由 wxf809602518 于 2013-02-22 18:43:18 编辑 本人对于优化就是菜鸟,以前从没接触过。求各位大哥帮忙啊, 我用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);
}
}
但是 却不知道放在网站的什么地方才能生效,要如何建文件,怎样才能让这段代码运行 ,求个问大哥帮忙啊 gzip??网站?优化 asp.net
[解决办法]
这是个模块
在web.config中修改
在<system.web>中添加
<httpModules>
<add name="自己起名" type="程序集.CompressionModule ,程序集"/>
</httpModules>
请搜索模块相关知识即可
[解决办法]
不知道“条件限制”是什么限制,这代码取决于服务器是否允许你使用 IHttpModule,只有IIS7+并且有一定的权限才可以这么做。
[解决办法]
<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>