运行TargetFramework net472的.netcore应用上的ResponseCompression

时间:2018-11-03 01:24:42

标签: asp.net-core-2.0 http-compression

我一直试图使Microsoft.AspNetCore.ResponseCompression 2.1.1在.net核心项目应用程序上工作,该应用程序将.net完整框架472定位为无效。

我将项目剥离到了核心,只剩下了:

        public void ConfigureServices(IServiceCollection services)
        { 
            services.AddResponseCompression(options =>
            {
                options.EnableForHttps = true;

            });
        } 


        public void Configure(IApplicationBuilder app)
        { 
            app.UseResponseCompression();   

            app.UseStaticFiles(); 
        }

我正在尝试让中间件压缩静态文件。

请求标头:

GET http://localhost:3721/css/Site.css HTTP/1.1
Host: localhost:3721
Connection: keep-alive
Accept: text/css
Accept-Encoding: gzip, deflate, br, *

响应头:

HTTP/1.1 200 OK
Date: Sat, 03 Nov 2018 01:20:21 GMT
Content-Type: text/css
Server: Kestrel
Last-Modified: Thu, 13 Jul 2017 16:35:14 GMT
Accept-Ranges: bytes
ETag: "1d2fbf600bbcfda"
Vary: Accept-Encoding
Content-Length: 730

我的实现中是否存在明显错误,会导致静态文件响应标头不回显

content-encoding: gzip (or other)

是否可以插入用于决定是否压缩请求的方法?

1 个答案:

答案 0 :(得分:1)

对于您的响应标头,它已经被压缩并用cache (vary) responses指示Vary: Accept-Encoding

  

变化

     

当服务器将值为Accept-Encoding的值发送给客户端和   代理,Vary标头向客户端或代理表明它   应根据的值缓存(变化)响应   请求的Accept-Encoding标头。返回内容的结果   使用Vary:Accept-Encoding标头是压缩和   未压缩的响应将分别缓存。

您可以尝试以下不同方式以查看不同结果:

  • Chrome浏览器:按Ctrl + F5检查响应标题。
  • 尝试PostMan
  • 尝试提琴手