12 comments

[ 4.1 ms ] story [ 32.8 ms ] thread
Seems like this only helps large (heavy) websites with consistent content. The real world examples are all large, like YouTube, Amazon, etc...

Small JSON responses that compress to <1k would fit in a single packet, so I don't see the advantage of going from "65 bytes with normal Zstandard compression, vs 28 bytes when using the past response as a dictionary - 57% smaller."

yes i was under the same impression, but i think this LUT/dictionary solution is counter intuitive to both of our current understandings of the web.

The "aha" moment for me was that, without this dict, the user is going to always request a full download of the data. For instance, let's say the NYT published an article and you read it. Then an editors note is added to the article. When you go back to read the article, the data transfer is miniscule. Now that is an edge case, but imagine a website that allows comments.. twitter.. reddit.. small text based pages that at first seem incosequential until you think about how we use the web, millions of users, returning to pages over and over again.

For me, my mental model of this structure is a LUT(key/value pair) wrapped in a Version Control(hash).

Now i think your comment is correct if we were to add how many requests the webpage is recieving and how frequently changes are happening to said webpage. My blog would recieve no benefits from implementing this tech, and using napkin math, my blog would need 1000 days to break even. Microsofts' blog however... less than a day, in theory.

The toy examples aren't the savings. Do the calculations with a json list of 100 objects and you'll find that compress increase more significantly.

So yeah, one time object return isn't impressive. Once those objects are in an array, then there's a much more remarkable compression.

While reading, I started wondering if we'll see an LLM constructor that'll take a API and some actual browser use and create a model that maximizes these types of message-centric compression.

So this is just LZ with a pre-populated window? Any backreferenceing compression can be used this way - just prepopulate the backreference history on both client and server up front and off you go. Why is this new?
Per the article, it’s new to browsers, not compression generally, due to the lack of standardization. the future is already here, just not evenly distributed.
I would be thinking a lot more about JSON APIs than HTML content when considering the potential upside of this.
Is there any similar ecosystem hook for a zip-like archive? It would be great to have something like .zip file containers for zstd/brotli which can contain a small number of dictionaries and then the decompression utility automatically uses them. For example, suppose you have a lot of .js / .css / .html files. Or Python files. Or whatever. It would be more efficient than individual .zstd files.
Poison the dictionary, inject the code.
> Dictionary Compression is finally here, and it's ridiculously good

cough winrar cough