Сжатие IIS 7.5 gzip на виртуальном хостинге - PullRequest
2 голосов
/ 24 августа 2011

У меня есть веб-сайт, который использует ASP.NET и размещен на общем хостинге IIS 7.5, поэтому у меня нет прямого доступа к настройкам IIS. Теперь я хочу включить сжатие gzip моих страниц и файлов css / js с использованием возможностей IIS, но ни один из рецептов, найденных в Интернете, не работал для меня. Например, когда я добавляю то, что написано здесь в мой Web.config, ничего не меняется: ни ошибок, ни сжатия.

Возможно ли это? Если нет, то какая лучшая альтернатива?

Ответы [ 3 ]

4 голосов
/ 24 января 2013

Я столкнулся с той же проблемой, и поэтому использовал сжатие .net, вызванное с использованием global.asax вместе с переименованием статического css с расширением .aspx и использованием перезаписи URL через Web.config. На вершине .css.aspx я просто добавил

<%@ Page ContentType="text/css" %>

В правилах перезаписи system.webserver конфигурации Web.config:

<rule name="san aspx">
    <match url=".*[^/]$" />
        <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        </conditions>
    <action type="Rewrite" url="{R:0}.aspx" />
</rule>
<rule name="revert aspx">
    <match url="(.*)\.aspx$"/>
        <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        </conditions>
    <action type="Rewrite" url="{R:1}" />
</rule>

В Application_PreRequestHandlerExecute global.asax

HttpApplication app = sender as HttpApplication;
string acceptEncoding = app.Request.Headers["Accept-Encoding"];
Stream prevUncompressedStream = app.Response.Filter;
if (acceptEncoding != null && acceptEncoding.Length > 0) {
    acceptEncoding = acceptEncoding.ToLower();
    if (acceptEncoding.Contains("gzip")){
        app.Response.Filter = new GZipStream(prevUncompressedStream, CompressionMode.Compress);
        app.Response.AppendHeader("Content-Encoding", "gzip");
    }
}    
Response.Cache.VaryByHeaders["Accept-Encoding"] = true;

Это кажется пугающим, носделано с построением правильного понимания, это работает как очарование и стоит экономии на SEO, связанной с PageSpeed, а также с общим хостингом.Я попробовал с поддержкой моего хостинг-провайдера, но вместо этого они просто продавали более экзотические хостинговые пакеты.Для принудительно сжатого содержимого, такого как файл .svgz, я использовал отдельную папку и httpProtocol для system.webserver в файле web.config этой папки, который я написал:

<customHeaders>
    <add name="Content-Encoding" value="gzip" />
</customHeaders>
3 голосов
/ 24 августа 2011

Попробуйте пример конфигурации в нижней части этой статьи:

http://www.iis.net/ConfigReference/system.webServer/urlCompression

<configuration>
   <system.webServer>
      <urlCompression doStaticCompression="true" doDynamicCompression="false" />
   </system.webServer>
</configuration>

В этом вопросе говорится, что:

"Да, вы можете включить сжатие с помощью web.config, как показано в статье ниже, - но это может зависеть от разрешений на доступ к сайтам для серверов."

Посмотрите, поможет ли это вам:

IIS 7.5 сжатие Gzip ASP.NET-4

Или это:

Сжатие GZip на IIS 7.5 не работает

0 голосов
/ 18 июля 2014

Я знаю, что это очень старый, но я нашел эту ссылку, которая действительно работает для меня. У меня есть хостинг arvixe, и они также не допускают сжатие. Я попробовал все в web.config, что не работает, но это в глобальном работает

http://forums.asp.net/t/1599397.aspx?Best+Way+to+Enable+HTTP+Compression

...