@ledsun blog

無味の味は佳境に入らざればすなわち知れず

Railsで静的ファイル配信をするときに圧縮ファイルを優先して返す機能

僕はこの機能の存在を今日知りました。

Railsで、public_file_serverを有効にするとpublicディレクトリ配下にある静的ファイルをファイルを配信できます。 このとき、hoge.cssファイルの代わり(または一緒に)gzip圧縮したhoge.css.gzファイルを置いておくと、gzip圧縮したhoge.cssとして配布してくる機能です。

Rails 4.2から登場していたようです。

https://github.com/rails/rails/blob/v4.2.0/actionpack/CHANGELOG.md

Requests that hit ActionDispatch::Static can now take advantage of gzipped assets on disk. By default a gzip asset will be served if the client supports gzip and a compressed file is on disk.

Rails 6.1からは Brotli 形式のファイルにも対応しています。

https://github.com/rails/rails/blob/v6.1.0/actionpack/CHANGELOG.md

ActionDispatch::Static handles precompiled Brotli (.br) files.

この機能は ActionDispatch::Staticミドルウェアで、実装されています。

ruby-jpのslackで id:willnet さんに AD::Static refactor with precompressed Brotli support by jeremy · Pull Request #38674 · rails/rails · GitHub *1 を教えてもらいました。

*1:Brotli 形式に対応したPRです。