我正在使用运行 ASP.Net Core 2.0 Web 应用程序的共享主机。当我在本地主机上运行该应用程序时,我可以看到 HttpCompression 工作正常(为 JS 文件返回响应标头的内容编码:gzip)。
部署到共享主机后, content-encoding: gzip 响应不再存在。我尝试在 web.config 中添加各种 httpCompression/urlCompression 设置,但托管公司表示我的计划已禁用这些设置。
有没有其他方法可以使 Gzip 压缩工作,或者我是否必须使用在 IIS 中启用它的托管计划?
编辑:我还使用 ResponseCompression 中间件作为 ASP.Net Core 的一部分,内容编码响应标头仍然没有出现。配置代码如下:
public void ConfigureServices(IServiceCollection services)
{
services.AddLogging();
services.AddResponseCompression(options =>
{
options.Providers.Add<GzipCompressionProvider>();
});
...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
if (env.IsDevelopment())
{
loggerFactory.AddDebug(LogLevel.Debug);
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
else
{
app.UseExceptionHandler("/error");
}
app.UseStatusCodePagesWithRedirects("/error/{0}");
app.UseResponseCompression();
app.UseStaticFiles(new StaticFileOptions
{
OnPrepareResponse = ctx =>
{
ctx.Context.Response.Headers.Append("Cache-Control", "public, max-age=604800");
}
});
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "areas",
template: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
);
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
var options = new RewriteOptions()
.AddRedirectToHttps();
app.UseRewriter(options);
}
相关分类