首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

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

2013-02-25 
关于asp.net网站 gzip压缩 优化问题本帖最后由 wxf809602518 于 2013-02-22 18:43:18 编辑本人对于优化就

关于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+并且有一定的权限才可以这么做。
[解决办法]

引用:
本帖最后由 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>

热点排行