共享字典:压缩技术如何跟上代理化网络的步伐
Cloudflare宣布支持共享压缩字典,通过增量压缩仅传输文件差异,大幅减少冗余数据传输。公开测试版将于2026年4月30日上线。
过去十年间,网页的大小每年以6-9%的速度增长,这主要归因于框架驱动的开发模式、丰富的交互体验以及富媒体内容的普及。这一趋势并未改变,但另一个因素正在加剧带宽的浪费:代理(Agent)的兴起。代理不仅频繁爬取和消费网页,还通过AI辅助开发加速了部署的迭代。这意味着每次部署后,大量客户端(包括浏览器和其他工具)需要重新下载几乎相同的资源,造成冗余数据的反复传输。
Cloudflare今日宣布了对共享压缩字典(Shared Compression Dictionaries)的支持,旨在解决这一效率低下的问题。该技术通过增量压缩(Delta Compression)仅传输文件差异,避免了重复下载完整资源。其核心机制是:服务器告知浏览器使用已缓存的旧版本作为字典,然后仅发送更新部分。例如,一个272KB的JavaScript文件,经过gzip压缩后为92.2KB,而使用共享字典压缩后仅需2.6KB——比gzip再减少97%,几乎与文件差异本身相当。
这项技术并非全新尝试。早在2008年,Google就在Chrome中推出了SDCH(Shared Dictionary Compression for HTTP),但因安全漏洞(如CRIME、BREACH攻击)和架构问题(如同源策略冲突、CORS不兼容)而于2017年被放弃。经过十多年的标准化努力,现代规范RFC 9842解决了这些缺陷,强制要求字典仅在与资源同源时使用,从而基本消除了侧信道攻击的风险。目前Chrome和Edge已支持,Firefox正在跟进。
Cloudflare将分三个阶段推出共享字典支持。第一阶段(透传支持)将于2026年4月30日开启公开测试,Cloudflare将原样转发必要的HTTP头(如Use-As-Dictionary、Available-Dictionary)和编码(dcb、dcz),并正确缓存字典变体。第二阶段,Cloudflare将代客户管理字典生成和增量压缩,客户只需通过规则指定哪些资源应作为字典。第三阶段则完全自动化:Cloudflare网络根据流量模式自动识别适合增量压缩的资源并生成字典,无需任何配置。实验室测试显示,对于仅含少量变更的JavaScript包,P99下载时间从gzip的161ms降至1ms(缓存未命中时),性能提升超过99%。
Cloudflare强调,共享字典将压缩从“无状态”变为“有记忆”,尤其适合当前代理化工具频繁部署和大量机器流量并存的局面。这不仅节省带宽,还降低CPU消耗,使网络能够更高效地扩展。随着2026年4月30日测试版的临近,Cloudflare邀请开发者通过演示站点“Can I Compress (with Dictionaries)?”体验这一技术的潜力。
这一技术的意义在于,它从根本上改变了压缩的范式。传统压缩算法(如gzip)是无状态的,每次都重新压缩整个文件;而共享字典则赋予压缩“记忆”,利用客户端已有的缓存作为参考。在代理驱动的网络环境中,这种有状态压缩不仅能减少单个响应的字节数,还能降低总传输次数,从而缓解硬件瓶颈。尽管标准化的道路漫长且充满挑战,但Cloudflare的实施方案使得这一技术对所有人都可及,包括那些没有工程资源手动实现自定义字典的站点。