Apakah mungkin untuk mengubah WEBrick header respons HTTP secara global untuk ekstensi file tertentu, misalnya untuk menyajikan semua file dengan ekstensi svgz untuk menyertakan HTTP Header " Pengodean Konten: gzip" dalam respons HTTP? Sepertinya saya tidak tahu bagaimana melakukan ini.

1
a2f0 25 Mei 2015, 19:01

1 menjawab

Jawaban Terbaik

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")
0
a2f0 10 Mei 2017, 03:17
Ah @dps, sekarang saya lebih mengerti apa yang sebenarnya Anda cari... Dalam hal ini, middleware khusus mungkin merupakan ide yang bagus, berhati-hatilah: middleware adalah elemen baru untuk seluruh tumpukan (Rails) Anda, jadi setiap permintaan akan menjalankan kode ini. Saya pikir Anda hanya perlu dan titik akhir untuk mengambil file semacam ini... Pertanyaan awal Anda mungkin sedikit deskriptif :) Akan lebih baik jika Anda mengedit sedikit pertanyaan dan judul asli... PD. Saya tidak mengerti edisi terakhir Anda untuk jawaban ini.
 – 
markets
26 Mei 2015, 01:30
Markets terima kasih atas semua bantuan Anda hari ini. Anda adalah jiwa yang baik untuk menghabiskan begitu banyak waktu untuk ini untuk saya. Saya telah menghapus hasil edit terakhir saya (ternyata itu asing), dan memodifikasi pertanyaan awal untuk kejelasan.
 – 
a2f0
26 Mei 2015, 04:49
Terima kasih kembali! itu sebabnya komunitas penting :) Terima kasih telah mengklarifikasi OP Anda.
 – 
markets
26 Mei 2015, 11:32