C# asp.net mvc捆绑包gzip压缩不起作用
我的包配置如下所示:C# asp.net mvc捆绑包gzip压缩不起作用,c#,asp.net-mvc,asp.net-mvc-5,bundling-and-minification,iis-8.5,C#,Asp.net Mvc,Asp.net Mvc 5,Bundling And Minification,Iis 8.5,我的包配置如下所示: public class BaseBundleConfig { public static void RegisterBundles(BundleCollection bundles) { bundles.Add(new ScriptBundle("~/bundles/Models").IncludeDirectory("~/Scripts/models/", "*.js", true)); bundles.Add(new
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;
}
}
我使用bundle的inside index.cshtml如下:
......
@System.Web.Optimization.Scripts.Render("~/bundles/framework")
.....
@System.Web.Optimization.Styles.Render("~/Content/css")
在IIS 8.5上发布后。捆绑和缩小工作与预期一样,但是对于ScriptBundle和StyleBundle,捆绑都没有压缩。响应内容类型始终为text/javascript或text/css。
为什么gzip压缩不起作用
在web.config中,动态和静态内容压缩都设置为true
<system.webServer>
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
</system.webServer>
MVC程序集的版本:
System.Web.Mvc 5.2.3.0
System.Web.Optimization 1.1.0
服务器上还安装了动态压缩模块
新信息:
两个屏幕截图,第一个是IIS请求跟踪日志
这显示动态压缩模块正在完成它的工作,第二个是该请求的chrome网络选项卡响应头。为什么传输编码:分块且响应不是gzip:\
感谢您的想法在
之前或之后向web.config添加一个
部分。这是我的:
<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压缩工作与我预期的一样 对于IIS 7.5,但可能会有所帮助-只是添加了配置,但没有成功抱歉,这不起作用。您是否已经完成了James提供的链接中的所有故障排除?有很多因素可能会导致gzip不能像您可能遇到的那样工作。在摆弄服务器3个小时后,问题就解决了。有没有办法克服这个问题?