让我们说UA已经请求我的800kB合并源代码文件并缓存它。让我们说我然后在该文件中添加了一个新功能。
如何使用标准HTTP标头让UA仅获取添加的功能并更新其缓存?我明确地不希望UA重新下载完整的800kB。
答案 0 :(得分:1)
如果服务器和UA都在您的控制之下,您可以实现RFC 3229,它为此定义协议。有关示例,请参阅Section 10.7.3。但是,请注意RFC 3229和RFC 7234(它所基于的)是easy to get wrong的复杂规范。
如果您希望与公共UA(不实施RFC 3229)进行互操作,则没有直接的方法可以执行您想要的操作。不过,你可以手工模仿。例如,如果有问题的“源代码文件”是<script src>
的JavaScript文件,那么您可以为新功能添加另一个<script src>
,而不是更改该文件。如果你预计这种变化经常发生,你可以从一开始就有两个<script src>
:一个用于大的,不经常更新的基础,另一个用于频繁的小添加。另请参阅最近的另一个问题:A solution idea for incremental updates using browser cache
还要考虑其他减少网络流量的方法。使用新的Brotli算法进行压缩,Web浏览器越来越多地支持该算法,从而节省slightly more than gzip。如果您担心服务器端带宽使用率的高峰,请尝试逐步向用户推出更新,这样他们就不会同时尝试获取整个文件。