Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http 发送(可能)非常大的文本文件的部分更新/添加_Http_File Transfer_Large Files_Network Efficiency - Fatal编程技术网

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

Http 发送(可能)非常大的文本文件的部分更新/添加,http,file-transfer,large-files,network-efficiency,Http,File Transfer,Large Files,Network Efficiency,假设UA请求了我的800kB合并源代码文件,并将其缓存。假设我随后向该文件添加了一个新函数 我如何让UA仅获取添加的函数,并使用标准HTTP头更新其缓存?我明确不希望UA重新下载完整的800kB。如果服务器和UA都在您的控制之下,您可以实现,这定义了一个协议。有关示例,请参见。但是,请注意,RFC 3229和(它所基于的)是复杂的规范 如果您希望与普通UAs(不实现RFC3229)进行互操作,那么没有直接的方法来实现您想要的。不过,您可以手动模拟。例如,如果所讨论的“源代码文件”是的JavaSc

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


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

如果服务器和UA都在您的控制之下,您可以实现,这定义了一个协议。有关示例,请参见。但是,请注意,RFC 3229和(它所基于的)是复杂的规范

如果您希望与普通UAs(不实现RFC3229)进行互操作,那么没有直接的方法来实现您想要的。不过,您可以手动模拟。例如,如果所讨论的“源代码文件”是
的JavaScript文件,那么您可以为新函数添加另一个
,而不是更改该文件。如果您预计这样的更改会经常发生,那么从一开始就可以有两个
:一个用于大型、不经常更新的基础,另一个用于频繁的小型添加。另见最近关于这一点的另一个问题:


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

幸运的是,我不需要支持浏览器(“普通用户代理”),如果他们不实现RFC 3229,我可以拒绝连接。你能告诉我更多吗?@SoniEx2我是否正确地理解,你正在构建自己的服务器和用户代理,只是在寻找一个标准,以避免重新发明协议?缓存呢:你也是自己实现的吗?我想我可能需要自己构建东西。最好使用标准,因为这样做可以增加兼容性(理论上)。但是,是的,只是在做另一个HTTP实现:)@SoniEx2好吧,我想你可以使用RFC3229。阅读它的例子。您可以通过查找
A-IM
请求头来检查UA是否支持它。然而,我怀疑你是否真的想要这个。RFC 7234是通用且复杂的,RFC 3229更是如此。至少尝试为您的平台重用现有的开源RFC 7234实现。您是否可以编辑您的答案以删除第一条语句(“您不能”),以便我可以接受它作为答案?