cancelByProducingResumeData仅适用于支持字节范围请求的服务器吗?

时间:2018-02-15 13:45:40

标签: ios http-headers nsurlsession

我正在使用NSURLSession从服务器下载epub文件,该文件需要支持暂停/恢复下载。

在引用Apple文档时,我发现需要从服务器端处理一些条件才能使用cancelByProducingResumeData

以下Apple文档中的条件不在我的服务器中处理条件

  1. 服务器提供ETag或Last-Modified标头(或 两者都在其回复中

  2. 服务器支持字节范围请求

  3. 是否有任何解决方法可以在客户端进行暂停/恢复而无需在响应标头中进行更改?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

至少对于后台下载,除了该服务器功能之外别无选择,但如果您能够编写CGI脚本或类似脚本,则添加这些标头很容易。也就是说,我会担心在这个时代缺乏这种基本功能的任何服务器的安全性,因为大多数主要服务器此时都支持它十年 - 当然,除非缺乏支持的原因是你正在使用缺少此支持的CGI脚本,在这种情况下解决方案是修复脚本。

对于前台下载,您可以使用分块作为一种相当粗略的替代方案。将文件分成更短的部分并将它们组装在客户端代码中。这样,如果单个块失败或者用户暂停下载,您只需要重新获取一个块。

也就是说,大多数EPUB文件足够小,我不得不怀疑它是否值得付出努力。在进行下载时,大多数用户将进入快速LTE网络,平均EPUB将在几分之一秒内下载。