asp.net в MVC связки с помощью gzip compresstion не работать
Конфигурация моего пакета выглядит так:
public class BaseBundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/Models").IncludeDirectory("~/Scripts/models/", "*.js", true));
bundles.Add(new ScriptBundle("~/bundles/framework").Include(
"~/Scripts/framework/frameworkmodels.js",
"~/Scripts/framework/appbase.js",
"~/Scripts/framework/directives/directives.js",
"~/Scripts/framework/services/Services.js",
"~/Scripts/framework/controllers/controllers.js",
"~/Scripts/framework/filter/filters.js",
"~/Scripts/app/filter/customFilters.js"
).Include("~/Scripts/app.js"));
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/libs/bootstrap/bootstrap.min.css",
"~/Content/libs/bootstrap/bootstrap-theme.min.css",
"~/Content/libs/bootstrap/angular-csp.css",
"~/Content/libs/bootstrap/mainStyle.css"
));
BundleTable.EnableOptimizations = true;
}
}
И я использовал внутренний индекс бандла.cshtml вот так:
......
@System.Web.Optimization.Scripts.Render("~/bundles/framework")
.....
@System.Web.Optimization.Styles.Render("~/Content/css")
При отладке сайта на VS2015 или публикации в IIS 8.5. объединения и минификации работает, как ожидалось, но связки не сжимаются для ScriptBundle и StyleBundle. тип содержимого ответа всегда является text / javascript или text / css.
почему сжатие gzip не работает??

Динамическое и статическое сжатие контента имеют значение true в web.конфиг
<system.webServer>
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
</system.webServer>
Версия сборки MVC:
Система.Сеть.В MVC 5.2.3.0
Система.Сеть.Оптимизация 1.1.0
и модуль динамического сжатия также установлен на сервере.
Новая информация:
два скриншота, первый-это журнал трассировки запросов IIS
это показывает, что модуль динамического сжатия выполняет свою работу, а второй-заголовки ответов Chrome network tab для этого запроса. почему Transfer-Encoding: chunked и ответ не gzip:


Спасибо за ваши идеи
2 ответов:
Добавьте раздел
<httpCompression>в свой веб-сайт.config до или после<urlCompression>. Вот мое:<httpCompression directory="%SystemDrive%\websites\_compressed" minFileSizeForComp="1024"> <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="application/x-javascript" enabled="true" /> <add mimeType="application/json" 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="application/x-javascript" enabled="true" /> <add mimeType="application/json" enabled="true" /> <add mimeType="*/*" enabled="false" /> </staticTypes> </httpCompression>Обратите внимание, что это не срабатывает, если пакет не составляет 1024 байта или больше (
minFileSizeForComp), поэтому вы не тратите время на сжатие файлов, которые уже очень малы.Обратите также внимание, что вам нужно будет убедиться, что gzip.dll находится в этой папке.
Я нахожу точку проблемы, сетевое оборудование (брандмауэр) между клиентами и IIS распаковывает данные gzip и после обработки содержимого, отправляет его кусками клиенту, когда я пытаюсь от других клиентов за пределами компании, сжатие gzip работает так, как я ожидал.
Comments