为(可能)非常大的文本文件发送部分更新/添加



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

如何让 UA 仅获取添加的函数,并使用标准 HTTP 标头更新其缓存?我明确不希望 UA 重新下载完整的 800kB。

如果服务器和 UA 都在您的控制之下,则可以实现 RFC 3229,它为此定义了协议。有关示例,请参见第 10.7.3 节。但是,请注意,RFC 3229 和 RFC 7234(它所基于的(是复杂的规范,很容易出错。

如果您希望与常见的 UA(不实现 RFC 3229(进行互操作,则没有直接的方法可以执行所需的操作。不过,您可以手动模拟这一点。例如,如果所讨论的"源代码文件"是用于<script src>的JavaScript文件,那么您可以仅为新函数添加另一个<script src>,而不是更改该文件。如果您预计此类更改会经常发生,则可以从一开始就有两个<script src>:一个用于不经常更新的大型基础,另一个用于频繁的小添加。另请参阅最近关于此的另一个问题:使用浏览器缓存进行增量更新的解决方案思路

还要考虑减少网络流量的其他方法。使用新的 Brotli 算法进行压缩,该算法越来越受到 Web 浏览器的支持,该算法比 gzip 节省略多。如果您担心服务器端的带宽使用高峰,请尝试以增量方式向用户推出更新,这样他们就不会尝试同时获取整个文件。

最新更新