Hacker News new | past | comments | ask | show | jobs | submit login
How to Improve Rails Caching with Brotli Compression (pawelurbanek.com)
50 points by pawurb on Sept 12, 2023 | hide | past | favorite | 8 comments



Upcoming in Rails 7.1, you can specify a custom compressor for your cache, out of the box. See the `:compressor` option of `ActiveSupport::Cache::Store.new`:

https://api.rubyonrails.org/v7.1/classes/ActiveSupport/Cache...


Thanks for this. Will likely defer until this lands, but looking forward to trying out Brotli and Zstd for this use case!


Thanks, I wasn't sure when it will be live. I'll update the post to reflect it.


If that compression is internal-only, i'd start looking at zstd, which is much better at both speed and compression level


From TFA:

> Optionally, you can hook up a custom compression algorithm. For example, Google Snappy offers even better performance than Brotli for the cost of worse compression ratios. ZSTD by Facebook is also worth checking out.

(...)

> The great news is that support for custom cache compression algorithms has recently been merged into the Rails main branch. But it may take a while before it’s available in a production Rails release.


Thanks for suggestion. Gem supports custom compression algorithms. I'll try to add more compression types to the benchmarks.


Note zstd can be fine-tuned to almost any ratio between performance and compression, worth trying multiple different settings

https://raw.githubusercontent.com/facebook/zstd/v1.3.4/doc/i...


Important to understand about Brotli vs. other compression is that Brotli has been pretrained with HTML/CSS/JS code. It efficiently compresses English text and source code, especially small files, due to its static dictionary.

https://chromium.googlesource.com/external/font-compression-...

There are other factors that make Brotli good, but this is good to understand when dealing with web frontends.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: