为什么WebDAV实现不支持GET文件夹

时间:2015-02-18 10:51:47

标签: performance http webdav

RFC 2518声明:

  

当应用于集合时,GET的语义不变,
  因为GET被定义为,"检索任何信息(形式为
  ()实体)由Request-URI" [RFC2068]。获得时   应用于集合可能会返回" index.html"
的内容   资源,集合内容的人类可读视图,或   完全不同的东西。因此有可能是一个结果   对一个集合的GET将与该成员的成员无关   集合。

作为owncloud的用户,我经常发现自己遭受包含大量小文件的文件夹的初始同步的低性能(对于报告相同问题的其他人,请参见owncloud bugtracker)。经过一番调查后,我得出结论,罪魁祸首是底层的WebDAV实现,它为集合产生了一个index.html,从而迫使客户端为每个文件发出一个GET请求。由于每个GET导致显着的开销(大约几百毫秒),整个操作从不使用可用带宽,并且被认为是令人痛苦的慢。

那么广泛使用的WebDAV实现不允许客户端一次下载整个文件夹的原因是什么?规范没有明确禁止它。当然这会提高性能,所以我想这个限制肯定有一些技术原因。

1 个答案:

答案 0 :(得分:1)

  

规范没有明确禁止它。

它并没有禁止它,但它甚至没有暗示它是实现应该做的事情。给出的所有示例都是关于检索内容的列表或索引,而不是内容本身。

此外,即使服务器实现选择支持检索集合的内容,也没有规范格式(如何将单个文件打包到一个下载中)。因此,这样的实现将是专有的,并且您的WebDAV客户端无论如何都不会支持它。