我們服務的文件從我們的ASP .NET的Web API網站HTTP壓縮:與啓用的ASP.NET Web API
public class Startup
{
public void Configuration(IAppBuilder app)
{
var clientHostname = System.Configuration.ConfigurationManager.AppSettings["ClientHostname"];
var staticFileOptions = new StaticFileOptions()
{
OnPrepareResponse = staticFileResponseContext =>
{
staticFileResponseContext.OwinContext.Response.Headers.Add("Cache-Control", new[] { "public", "max-age=0" });
}
};
app.MapWhen(ctx => ctx.Request.Headers.Get("Host").Equals(clientHostname), app2 =>
{
app2.Use((context, next) =>
{
if (context.Request.Path.HasValue == false || context.Request.Path.ToString() == "/") // Serve index.html by default at root
{
context.Request.Path = new PathString("/Client/index.html");
}
else // Serve file
{
context.Request.Path = new PathString($"/Client{context.Request.Path}");
}
return next();
});
app2.UseStaticFiles(staticFileOptions);
});
}
}
我想啓用HTTP壓縮。根據this MSDN documentation
在IIS,Apache或Nginx中使用基於服務器的響應壓縮技術,其中中間件的性能可能與服務器模塊的性能不匹配。使用響應壓縮中間件,當你無法使用:
IIS動態壓縮模塊
Apache的mod_deflate模塊模塊
NGINX壓縮和解壓
HTTP.sys在服務器(以前稱爲WebListener)
紅隼
所以我覺得第一個可取的方法在我的情況下做到這一點是與IIS動態壓縮模塊。因此,我想這在我的web.config,作爲測試,以下this example:
<configuration>
<system.webServer>
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<dynamicTypes>
<add mimeType="*/*" enabled="true" />
</dynamicTypes>
<staticTypes>
<add mimeType="*/*" enabled="true" />
</staticTypes>
</httpCompression>
</system.webServer>
</configuration>
然而,響應頭不包括Content-Encoding
,所以我不相信它被壓縮。我錯過了什麼?我怎樣才能以最好的方式將它設置爲以壓縮方式提供服務?
我確認我的客戶正在發送一個Accept-Encoding
標頭gzip, deflate, br
。
更新
我試圖在IIS安裝動態HTTP壓縮,因爲它不是默認安裝的。在我看來,我試圖靜態地提供內容,但我認爲這值得一試。我驗證了在IIS管理器中啓用了靜態和動態內容壓縮。但是,我重新運行它,但仍然沒有壓縮。
更新2
我意識到壓縮的工作我們Azure的服務器上,但仍無法與我的本地IIS。
而不是所有類型的通配符,您是否嘗試過在配置中使用特定的MIME類型? – Jasen
@Jasen是的,我有,不幸的是無濟於事。 –