gzip единственная страница asp.net - PullRequest
2 голосов
/ 04 августа 2011

Можно ли сжать одну страницу asp.net 3.5? мой сайт размещен на IIS7, и по техническим причинам я не могу включить сайт сжатия gzip. IIS7 имеет возможность gzip отдельных страниц или мне придется переопределить OnPreRender и написать код для сжатия вывода?

Ответы [ 2 ]

2 голосов
/ 04 августа 2011
        /// <summary>
    /// Sets up the current page or handler to use GZip through a Response.Filter
    /// IMPORTANT:  
    /// You have to call this method before any output is generated!
    /// </summary>
    public static void GZipEncodePage()
    {
        HttpResponse response = HttpContext.Current.Response;

        if (IsGZipSupported())
        {
            string acceptEncoding = HttpContext.Current.Request.Headers["Accept-Encoding"];
            if (acceptEncoding.Contains("deflate"))
            {
                response.Filter = new System.IO.Compression.DeflateStream(response.Filter,
                                                                          System.IO.Compression.CompressionMode.
                                                                              Compress);
                response.AppendHeader("Content-Encoding", "deflate");
            }
            else
            {
                response.Filter = new System.IO.Compression.GZipStream(response.Filter,
                                                                       System.IO.Compression.CompressionMode.
                                                                           Compress);
                response.AppendHeader("Content-Encoding", "gzip");
            }
        }

        // Allow proxy servers to cache encoded and unencoded versions separately
        response.AppendHeader("Vary", "Content-Encoding");
    }

    /// <summary>
    /// Determines if GZip is supported
    /// </summary>
    /// <returns></returns>
    public static bool IsGZipSupported()
    {
        string acceptEncoding = HttpContext.Current.Request.Headers["Accept-Encoding"];

        if (!string.IsNullOrEmpty(acceptEncoding) &&
            (acceptEncoding.Contains("gzip") || acceptEncoding.Contains("deflate")))
        {
            return true;
        }
        return false;
    }

У меня есть этот код в классе под названием CompressionUtilities. Затем на странице вы хотите GZIP (или, в моем случае, общая базовая страница для всех страниц, которые я хочу GZIP)

    protected override void OnPreRender(EventArgs e)
    {

        base.OnPreRender(e);
        CompressionUtilities.GZipEncodePage();
    }

Источник: http://www.west -wind.com / weblog / posts / 2007 / Feb / 05 / Больше-на-GZip-сжатии-с-ASPNET-контентом

0 голосов
/ 04 августа 2011

Вы можете использовать Модуль Blowery HttpCompress .В файле web.config вы можете указать файлы, которые вы хотите исключить из сжатия.

   <httpCompress preferredAlgorithm="gzip" compressionLevel="high">
      <excludedMimeTypes>
        <add type="application/pdf"/>
      </excludedMimeTypes>
      <excludedPaths>
        <add path="/pathToExclude"/>
        <add path="WebResource.axd"/>
        <add path="ScriptResource.axd"/>
      </excludedPaths>
    </httpCompress>
...