connectrpc/connect-python#96
Today I learned, that connectrpc uses the standard Accept-Encoding header in a non-standard way: ordered list. This causes inefficiencies with existing software, like Google Chrome, that for historical compatibility reasons start with "gzip, deflate" even though zstd is clearly more optimal for dynamic responses like in the connectrpc case. Accept-Encoding like "gzip, deflate, br, zstd" means that the server should pick whatever algorithm without client preference. Changing the standard semantics seems like the wrong way to go about it. I believe the connectrpc should either properly handle the q= value semantics or use a new header to not conflict with existing software. Otherwise I end up in a situation where I create a service that is accessible via HTTP and most browser users have higher response latency and bigger response size for no real reason.
connectrpc/connect-python#96
Today I learned, that connectrpc uses the standard Accept-Encoding header in a non-standard way: ordered list. This causes inefficiencies with existing software, like Google Chrome, that for historical compatibility reasons start with "gzip, deflate" even though zstd is clearly more optimal for dynamic responses like in the connectrpc case. Accept-Encoding like "gzip, deflate, br, zstd" means that the server should pick whatever algorithm without client preference. Changing the standard semantics seems like the wrong way to go about it. I believe the connectrpc should either properly handle the q= value semantics or use a new header to not conflict with existing software. Otherwise I end up in a situation where I create a service that is accessible via HTTP and most browser users have higher response latency and bigger response size for no real reason.