【问题标题】:Why do WebDAV implementations not support GETing a folder为什么 WebDAV 实现不支持获取文件夹
【发布时间】:2015-02-18 10:51:46
【问题描述】:

RFC 2518 规定:

GET 的语义在应用于集合时不会改变,
因为 GET 被定义为,“检索任何信息(在形式
实体的) 由 Request-URI" [RFC2068] 标识。GET when
应用于集合可能会返回“index.html”的内容
资源,集合内容的人类可读视图,或 完全不同的东西。因此,a的结果可能是
集合上的 GET 与集合的成员身份无关 收藏。

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

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

【问题讨论】:

  • Nit:RFC 2518 已过时,很久以前已被 RFC 4918 取代。
  • WebDAV 很慢,因为实现很糟糕。切换到更好的 WebDAV 客户端会有所帮助。

标签: performance http webdav


【解决方案1】:

规范没有明确禁止。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    • 2022-06-28
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多