QUIC uses only one static table of Huffman coding, but the compression
ratio can be improved by combining multiple tables. The following is a
comparison based on my proof of concept code. The leftmost number is the
reduced bit size.

'XPACK   comp. ratio request', 0.2533415841584158, 1.3393005138405436
'HPACK   comp. ratio request', 0.2471534653465347, 1.3282919612033537
0, 'accept'
0, 
'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7'
0, 'accept-encoding'
0, 'gzip, deflate, br'
0, 'accept-language'
0, 'ja,en-US;q=0.9,en;q=0.8'
0, 'cache-control'
0, 'max-age=0'
0, 'dnt'
0, '1'
0, 'sec-ch-ua'
-1, '"Google Chrome";v="117", "Not;A=Brand";v="8", "Chromium";v="117"'
0, 'sec-ch-ua-arch'
0, '"x86"'
0, 'sec-ch-ua-bitness'
0, '"64"'
0, 'sec-ch-ua-full-version'
0, '"117.0.5938.89"'
0, 'sec-ch-ua-full-version-list'
-1, '"Google Chrome";v="117.0.5938.89", "Not;A=Brand";v="8.0.0.0",
"Chromium";v="117.0.5938.89"'
0, 'sec-ch-ua-mobile'
0, '?0'
0, 'sec-ch-ua-model'
0, '""'
0, 'sec-ch-ua-platform'
0, '"Windows"'
0, 'sec-ch-ua-platform-version'
0, '"10.0.0"'
0, 'sec-ch-ua-wow64'
0, '?0'
0, 'sec-fetch-dest'
0, 'document'
0, 'sec-fetch-mode'
0, 'navigate'
0, 'sec-fetch-site'
0, 'same-origin'
0, 'sec-fetch-user'
0, '?1'
0, 'sec-gpc'
0, '1'
0, 'upgrade-insecure-requests'
0, '1'
0, 'user-agent'
-3, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36'
0, 'x-client-data'
-45, 
'CKa1yQEIj7bJAQiltskBCKmdygEI5tTKAQieicsBCJahywEIhaDNAQjwsc0BCNy9zQEI38TNAQi1xc0BCLnKzQEI1dDNAQiR0s0BCIrTzQEIwtTNAQjJ1s0BCPnA1BUYwcvMARi4v80B'

'XPACK   comp. ratio response', 0.25389886578449905, 1.340300870942201
'HPACK   comp. ratio response', 0.24155245746691867, 1.3184827478775605
0, 'accept-ch'
-2, 'Sec-CH-UA-Arch'
0, 'accept-ch'
-2, 'Sec-CH-UA-Bitness'
0, 'accept-ch'
-2, 'Sec-CH-UA-Full-Version'
0, 'accept-ch'
-2, 'Sec-CH-UA-Full-Version-List'
0, 'accept-ch'
-2, 'Sec-CH-UA-Model'
0, 'accept-ch'
-2, 'Sec-CH-UA-Platform'
0, 'accept-ch'
-2, 'Sec-CH-UA-Platform-Version'
0, 'accept-ch'
-1, 'Sec-CH-UA-WoW64'
0, 'alt-svc'
0, 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000'
0, 'cache-control'
0, 'private, max-age=0'
0, 'content-encoding'
0, 'br'
0, 'content-length'
0, '54188'
0, 'content-security-policy-report-only'
-2, 'object-src 'none';base-uri 'self';script-src
'nonce-OqX2tRcsQ42YI77KwfGMfg' 'strict-dynamic' 'report-sample'
'unsafe-eval' 'unsafe-inline' https'
0, 'http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp'
0, 'content-type'
-1, 'text/html; charset=UTF-8'
0, 'cross-origin-opener-policy'
0, 'same-origin-allow-popups; report-to="gws"'
0, 'date'
-2, 'Wed, 22 Nov 2023 18:46:19 GMT'
0, 'expires'
0, '-1'
0, 'origin-trial'
-50, 
'Ap+qNlnLzJDKSmEHjzM5ilaa908GuehlLqGb6ezME5lkhelj20qVzfv06zPmQ3LodoeujZuphAolrnhnPA8w4AIAAABfeyJvcmlnaW4iOiJodHRwczovL3d3dy5nb29nbGUuY29tOjQ0MyIsImZlYXR1cmUiOiJQZXJtaXNzaW9uc1BvbGljeVVubG9hZCIsImV4cGlyeSI6MTY4NTY2Mzk5OX0='
0, 'origin-trial'
-83, 
'AvudrjMZqL7335p1KLV2lHo1kxdMeIN0dUI15d0CPz9dovVLCcXk8OAqjho1DX4s6NbHbA/AGobuGvcZv0drGgQAAAB9eyJvcmlnaW4iOiJodHRwczovL3d3dy5nb29nbGUuY29tOjQ0MyIsImZlYXR1cmUiOiJCYWNrRm9yd2FyZENhY2hlTm90UmVzdG9yZWRSZWFzb25zIiwiZXhwaXJ5IjoxNjkxNTM5MTk5LCJpc1N1YmRvbWFpbiI6dHJ1ZX0='
0, 'p3p'
-2, 'CP="This is not a P3P policy! See g.co/p3phelp for more info."'
0, 'permissions-policy'
0, 'unload=()'
0, 'report-to'
0, 
'{"group":"gws","max_age":2592000,"endpoints":[{"url":"https://csp.withgoogle.com/csp/report-to/gws/other"}]}'
0, 'server'
0, 'gws'
0, 'set-cookie'
0, '1P_JAR=2023-11-22-18; expires=Fri, 22-Dec-2023 18:46:19 GMT;
path=/; domain=.google.com; Secure; SameSite=none'
0, 'set-cookie'
-23, 'AEC=Ackid1QH6gVXB6Rn68KWRmRtOGSW1unAfUHYsxuZh3Zs8cyWCZdKy8vrhQ;
expires=Mon, 20-May-2024 18:46:19 GMT; path=/; domain=.google.com;
Secure; HttpOnly; SameSite=lax'
0, 'set-cookie'
-19, 
'NID=511=fx_DiN-XffVTX7QHZe7UgP5GQd0mx2HY9B0Hz6MgzEpOESnD8DldcSLyj-U6AHIo8t4-dcOKelciAyOK2j03GJE1r_31zKvXnECnKWvOQiFPO6mtTTaCZWqtn2x8m5lnzbB_CyUA-HzXz-Vw3TXC0eeW_AQlcu8CybBgyxtW5Kc;
expires=Thu, 23-May-2024 18:46:19 GMT; path=/; domain=.google.com;
Secure; HttpOnly; SameSite=none'
0, 'strict-transport-security'
0, 'max-age=31536000'
0, 'x-frame-options'
-12, 'SAMEORIGIN'
0, 'x-xss-protection'
0, '0'

https://github.com/falsandtru/spica/blob/master/src/ascii.xpack.ts

This is particularly good at compressing tokens. There is no overhead in
data size due to the combination. If this approach has been considered,
please tell me the link to the conclusions.

Reply via email to