WEBrick 在 per-file 扩展基础上更改 HTTP 响应 headers

WEBrick alter HTTP response headers on a per-file extension basis

是否可以针对特定文件扩展名全局修改 WEBrick HTTP 响应 headers,例如为 所有 文件提供 svgz 扩展以在 HTTP 响应中包含 HTTP Header“Content-Encoding:gzip”?我似乎不知道该怎么做。

lib/dps/compression.rb

module Dps 
  class Compression
    def initialize(app)  
      @app = app  
    end  

    def call(env)  
      status, headers, response = @app.call(env)
      if File.extname(env['REQUEST_URI']) == ".svgz" && status == 200 
        headers["Content-Encoding"] = "gzip"
      else
        nil 
      end 
      [status, headers, response]
    end  
  end 
end

config/application.rb

config.autoload_paths += Dir["#{config.root}/lib/**/"]
config.middleware.insert_before("ActionDispatch::Static", "Dps::Compression")