Відповіді:
Ви можете включити стиснення GZIP повністю у вашому Web.config
файлі. Це особливо корисно, якщо ви перебуваєте на спільному хостингу та не можете налаштувати IIS безпосередньо, або якщо ви хочете, щоб ваша конфігурація передавалася між усіма середовищами, на які ви орієнтовані.
<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>
Щоб перевірити, чи працює компресія чи ні, використовуйте інструменти для розробників у Chrome або Firebug для Firefox та переконайтеся, що встановлено заголовк відповіді HTTP:
Content-Encoding: gzip
Зауважте, що цей заголовок не буде присутній, якщо код відповіді 304 (Не змінено). Якщо це так, зробіть повне оновлення (утримуйте зміну або управління, натиснувши кнопку оновлення) і перевірте ще раз.
.js
ні. Також спробували додати application/x-javascript
. Використовуючи разом з tomcat, звідси видалили directory
параметр.
Вам потрібно буде включити цю функцію на панелі керування функцій Windows:
Глобальний Gzip в HttpModule
Якщо у вас немає доступу до остаточного примірника IIS (спільного хостингу ...), ви можете створити HttpModule, який додає цей код до кожної події HttpApplication.Begin_Request:
HttpContext context = HttpContext.Current;
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip");
HttpContext.Current.Response.Cache.VaryByHeaders["Accept-encoding"] = true;
Тестування
Кудо, жодне рішення не робиться без тестування. Мені подобається використовувати плагін Firefox " Liveheaders ", він показує всю інформацію про кожне повідомлення HTTP між браузером та сервером, включаючи стиснення, розмір файлу (який можна порівняти з розміром файлу на сервері).
Мені потрібно було лише додати функцію у функції Windows, як згадував Чарлі. Для людей, які не можуть її знайти на вікні 10 або сервері 2012+, знайдіть її, як показано нижче. Я трохи боровся
Якщо ви також намагаєтеся зігнути динамічні сторінки (наприклад, aspx) і вона не працює, можливо, тому що параметр не ввімкнено (вам потрібно встановити модуль стиснення динамічного вмісту за допомогою функцій Windows):
http://support.esri.com/en/knowledgebase/techarticles/detail/38616
Ще один простий спосіб протестувати, не встановлюючи нічого, він також не залежить від версії IIS. Вставте свій URL-адресу на це посилання - SEO Checkup
Щоб додати до web.config: http://www.iis.net/configreference/system.webserver/httpcompression
Спробуйте Firefox з встановленими додатками Firebug. Я його використовую; чудовий інструмент для веб-розробників.
Я ввімкнув стискання Gzip також у своєму IIS7 за допомогою web.config.