Chúng tôi phục vụ tập tin cho một trang web từ ASP NET Web API của chúng tôi:Enable nén HTTP với 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);
});
}
}
Tôi muốn để cho phép nén HTTP. Theo số this MSDN documentation
Sử dụng công nghệ nén phản hồi dựa trên máy chủ trong IIS, Apache hoặc Nginx nơi hiệu suất của phần mềm trung gian có thể không khớp với mô-đun máy chủ. Sử dụng ứng Compression Middleware khi bạn không thể sử dụng:
IIS Nén gọn năng động mô-đun
Apache mod_deflate mô-đun
nginx nén và giải nén
HTTP.sys máy chủ (trước đây gọi là WebListener)
Kestrel
Vì vậy, tôi nghĩ cách đầu tiên thích hợp nhất để làm điều này trong ví dụ của tôi là với Mô-đun nén động IIS. Theo đó, tôi đã cố gắng này trong Web.config của tôi, như một thử nghiệm, sau 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>
Tuy nhiên, các tiêu đề phản ứng này không bao gồm Content-Encoding
, vì vậy tôi không tin nó đã được nén. Tôi đang thiếu gì? Làm thế nào tôi có thể thiết lập để phục vụ với nén theo cách tốt nhất có thể?
Tôi đã xác minh rằng khách hàng của tôi đang gửi tiêu đề Accept-Encoding
của gzip, deflate, br
.
Cập nhật
Tôi đã thử cài đặt Nén HTTP động trong IIS vì không được cài đặt theo mặc định. Dường như với tôi, tôi đang cố gắng phân phát nội dung tĩnh, nhưng tôi nghĩ rằng điều này đáng để thử. Tôi đã xác minh rằng cả nén nội dung tĩnh và động đều được kích hoạt trong IIS Manager. Tuy nhiên, tôi lại chạy nó nhưng vẫn không nén.
Cập nhật 2
Tôi nhận ra rằng nén đang hoạt động trên máy chủ Azure của chúng tôi nhưng vẫn không với IIS cục bộ của tôi.
Thay vì ký tự đại diện cho tất cả các loại, bạn đã thử loại mime cụ thể trong cấu hình chưa? – Jasen
@Jasen Có, tôi có, rất tiếc là không có kết quả. –