为(可能)非常大的文本文件发送部分 updates/additions

Sending partial updates/additions for (potentially) very large text files

假设一个 UA 请求了我的 800kB 合并源代码文件,并将其缓存。假设我随后向该文件添加了一个新函数。

如何使用标准 HTTP headers 让 UA 仅获取添加的功能并更新其缓存?我明确不希望 UA re-download 完整的 800kB。

如果服务器和UA都在你的控制之下,你可以实现RFC 3229, which defines a protocol for this. See Section 10.7.3 for examples. However, be advised that RFC 3229 and RFC 7234 (on which it is based) are complex specifications that are easy to get wrong

如果您希望与常见的 UA(未实现 RFC 3229)进行互操作,则没有直接的方法来执行您想要的操作。不过,您可以手动模拟它。例如,如果所讨论的“源代码文件”是 <script src> 的 JavaScript 文件,那么您可以为新函数添加另一个 <script src> 而不是更改该文件。如果您预计这种变化会经常发生,您可以从一开始就有两个 <script src>:一个用于大型、不经常更新的基础,另一个用于频繁的小添加。另请参阅最近的另一个问题:A solution idea for incremental updates using browser cache

同时考虑其他减少网络流量的方法。用新的 Brotli algorithm, increasingly supported by Web browsers, which saves slightly more than gzip 压缩。如果您担心服务器端的带宽使用量激增,请尝试逐步向用户推出更新,这样他们就不会同时尝试获取整个文件。