New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for Brotli compression #71

Open
joostdebruijn opened this Issue Jan 24, 2016 · 6 comments

Comments

Projects
None yet
6 participants
@joostdebruijn

joostdebruijn commented Jan 24, 2016

Is it an idea to add Brotli compression for https-requests to this module? Now support for Brotli has landed in the developer channels of Firefox and Chrome it is very likely that a significantly amount of clients will have support for this enabled in the very near future. So, it is maybe a good idea to support it in this module too.

I’m not (yet) very experienced with building modules for Node, but if there is anything I can help with, please let me know.

@dougwilson

This comment has been minimized.

Member

dougwilson commented Jan 24, 2016

Hi! This was discussed before in #59 if you want to read the prior discussion.

The answer is that we certainly can, but for it to be built-in here, we need the support either added to Node.js core or a pure-JS library.

Barring that, another option is to make this module flexible and allow for alternative user-defined encodings. There was the PR #62 but it was never completed due to a disagreement between the author and myself over a feature I wanted to be supported.

@dantman

This comment has been minimized.

dantman commented Feb 1, 2016

The performance of brotli is something that should be kept in mind.

Some previous tests:

brotli isn't necessarily always more efficient than gzip. brotli's biggest advantage is that at higher compression levels, at the cost of compression time, you can get compression ratios beyond what you can do even by using zopfli.

So you don't really get an advantage from using zopfli or brotli for dynamic content. They work best when you can wait a few extra seconds to let the compressor do more work.

For most people this means making a .gz file (using zopfli) and a .bro file with brotli during your build step and using the pre-compressed files instead of dynamically compressing with either.

@LeandroFavero

This comment has been minimized.

LeandroFavero commented Feb 12, 2016

dougwilson, maybe this can help:
A JavaScript port of the Brotli compression algorithm
https://github.com/devongovett/brotli.js

@passcod

This comment has been minimized.

passcod commented May 25, 2016

Note that the above port of Brotli doesn't support streaming yet. People interested in brotli and zopfli in the meantime may want to have a look at https://github.com/aickin/shrink-ray.

@mikemaccana

This comment has been minimized.

mikemaccana commented Apr 4, 2017

@dantman At level 4, Brotli uses less CPU AND compresses better than gzip - here's the results of a test using the top 1000 URLs on the internet: https://blogs.akamai.com/2016/02/understanding-brotlis-potential.html

@dougwilson

This comment has been minimized.

Member

dougwilson commented Mar 11, 2018

It looks like Node.js is discussing adding support ad a built-in nodejs/node#18964 which should make it trivial to add to this module.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment