下载

下载管理器所做的事情是网络浏览器所不做的

一个 4GB 的文件,完成了 90%,然后一个电话——或者只是一个锁定的屏幕——它就消失了。这是在 iOS 上下载时最常见的抱怨,但它不是一个错误。这是操作系统完全按照其设计目的进行的操作,也是存在单独一类应用程序的原因。

约 3 分钟 更新 2026年7月29日

  • 30秒 暂停的应用程序在 iOS 停止之前大约会继续运行多长时间
  • 206 使恢复成为可能的 HTTP 状态
  • 1字节 重新下载了多少正确恢复的传输

为什么切换应用程序时传输会停止

iOS 不会仅仅因为应用程序愿意而让其继续运行。当您离开某个应用程序时,它会在几秒钟内挂起,并且挂起的应用程序没有 CPU 时间,没有网络套接字,也无法注意到它已停止。它在内存中保存的所有内容仍然存在,但被冻结了——如果系统需要内存,应用程序会在没有通知的情况下直接终止。

因此,在应用程序内的普通连接上运行的下载以主页手势结束。有些应用程序通过要求额外几秒钟的后台时间来隐藏这一点,这就是为什么下载有时会在后台存活下来,只要您注意到它没有。

正确的答案是不同的。 iOS 提供了后台传输服务:您向系统提供 URL 和目的地列表,系统会按照自己的时间表在自己的进程中自行下载。您的应用程序可以暂停、终止或根本不运行 - 传输会继续,并且当有需要报告的情况时,应用程序会在后台重新启动。这是每次在锁定屏幕后仍然存在的下载背后的机制,使用它是应用程序预先做出的设计决策,而不是您可以打开的设置。

决定下载是否存活的四种机制

范围请求
请求 5,000,000 字节以上而不是整个文件的 HTTP 请求。如果服务器回答“206 Partial Content”,则可以从中间恢复;如果它回答“200 OK”并从头开始,则不是 - 文件必须从零开始再次获取。
并行连接
将一个文件拆分为多个范围并同时获取它们。它很有帮助,因为单个连接通常会受到服务器的限制或受到往返延迟的限制,而不是因为打开的套接字越多,您的互联网速度就越快。
已提交偏移量
有多少文件已安全写入磁盘,而不是仍在运行中。从最后提交的字节恢复的下载是正确的;一个从它“认为”收到的内容恢复的文件会产生一个损坏的文件,该文件仅在数小时后才显露出来。
后台会话
系统运行转移如上所述。它启动速度较慢,无法提供任意的自定义逻辑,并且它是应用程序不运行时唯一保持运行的东西。

下载失败的原因以及每次失败的情况

大多数“卡住下载”报告都是这五种之一,一旦您了解形状,就很容易区分它们。

你所看到的实际发生了什么有什么帮助
在您离开应用程序时停止传输是在进程中运行的,而不是在后台会话中运行。你无法从外部做任何事情——这是一个应用程序设计问题。
每次都从0%重新启动服务器忽略范围请求,因此无法从中间继续。稳定的连接,或者较小的文件。某些主机仅允许签名链接的范围。
几分钟后失败,反复链接已过期。许多主机发出的 URL 有效期为五到十分钟。再次从其页面获取链接并重新开始;旧的永远不会工作。
下载速度很快,然后文件打不开到达的是 HTML 错误页面或带有视频文件名的登录页面。检查大小 — 14 KB 的“电影”是一个网页。在提交之前检查链接。
尽管连接速度很快,但速度还是很慢服务器端的每个连接限制。更多并行连接(如果服务器允许)。如果它通过 IP 地址而不是套接字进行限制,则没有任何帮助。

当根本没有文件可供下载时

网络上的大部分视频不是以文件形式提供的。它以 HLS 的形式提供 - 一个“.m3u8”播放列表,其中列出了数百个小片段,每个片段几秒钟,通常具有多个质量级别,以便播放器可以随着连接的变化进行切换。没有单一的 URL 保存该影片,因为该影片仅作为序列存在。

保存一个意味着获取每个片段,然后重新混合它们:将视频和音频流写入普通的 MP4 容器。没有任何内容被重新编码,因此没有任何内容丢失,并且只需要几秒钟而不是电影的长度。结果是一个可以在任何地方播放的普通文件。

这也是为什么“下载此流”的启动时间比下载文件要长得多:必须获取并解析播放列表,选择质量级别,然后片段才能开始到达。这就是为什么有些流根本无法保存的原因——如果片段在 DRM 方案下加密,则故意无法获取密钥,并且任何尊重法律的工具都无法克服这一点。

真正的下载管理器与下载按钮的区别

应用程序关闭后它仍然存在

后台传输移交给系统,切换从相同的已提交字节继续,而不是再次启动文件。

它会在您提交之前告诉您链接是什么

大小、类型以及服务器是否支持恢复 — 所有这些都可以通过单个 HEAD 请求得知,并且在您花费 4 GB 的数据计划之前都非常有用。

它排队而不是洪水

一次十个文件比一次三个文件慢,因为每个连接获得的份额较小,并且故障会成倍增加。具有合理并发限制的队列会更快完成。

落地的是普通文件

在一个文件夹中,您可以看到,命名合理,可以由任何东西播放 - 而不是只有该应用程序可以打开的数据库 blob。

避免大多数下载问题的习惯

  • 在 Wi-Fi 上启动大文件并在前几秒钟保持屏幕打开

    切换到后台会话会提前进行;之后屏幕就不再重要了。

  • 不要一次排队二十个项目

    三到五个并发传输是几乎每个连接的最佳选择。

  • 检查之前而不是之后的可用空间

    填充磁盘的传输在达到 98% 时失败,iOS 可能已经清除了您的缓存以腾出空间。

  • 以怀疑的态度对待瞬间的“完成”

    一部在两秒内结束的电影就是一个错误页面。查看文件大小。

  • 从他们的页面重新获取过期的链接

    无论应用程序重试多少次,重试死签名 URL 将永远失败。

这在不同设备上有何不同

iPhone

最严格的环境:悬挂剧烈,存储紧张。后台会话并不是这里的优化,它们是唯一有效的。

iPad

相同的规则,有更多的运行空间 - 并且是一款 iOS 设备,其中大型库可以合理地放置在外部驱动器而不是内部存储上。

Mac

根本没有暂停,长时间传输的行为就像在任何桌面上一样。实际限制是服务器,而不是操作系统。

由此引发的问题

连接数越多就意味着下载速度越快吗?

不会。当服务器限制每个单独连接的速度时(这种情况很常见),它们会有所帮助。当限制是您自己的连接时,它们什么也不做,并且当主机计算每个 IP 地址的套接字数并开始拒绝它们时,它们会使事情变得更糟。有用的范围在 4 到 8 之间。三十是适得其反的。

屏幕锁定时可以继续下载吗?

是的,如果交给系统后台传输服务的话。锁定屏幕与该服务无关——重要的是被暂停的应用程序,而该机制的全部要点是无论如何它都会继续运行。

为什么我的下载会重新启动而不是继续?

服务器不接受范围请求。你可以看出,因为进度回到零而不是回升。有些主机仅在其签名的下载 URL 上支持范围,有些主机完全禁用它们,还有一些主机支持小文件但不支持大文件。

将流转换为 MP4 与重新编码相同吗?

不会。重新混合将现有视频和音频原封不动地转移到 MP4 容器中 — 无损,而且速度足够快,可以在几秒钟内完成。重新编码会使用不同的编解码器重建图像,并且总是会损失质量。如果保存两个小时的流需要两个小时,则某些内容在不需要时重新编码。

FoxDL

FoxDL如何下载

该引擎有两个通道:一个是进程内通道,当应用程序在屏幕上时速度很快,另一个是系统后台会话,当应用程序不在屏幕上时,系统后台会话将从同一字节接管。

  • 单个文件的并行块,直接写入磁盘上的最终位置,而不是写入随后必须连接的临时部分。
  • 后台传输在应用程序离开屏幕后继续,并在最后提交的偏移量处拾取 - 而不是应用程序认为它拥有的最后一个字节。
  • 在断开、重新启动或强制退出后恢复,前提是服务器满足范围请求。如果没有,FoxDL 会这样说而不是循环。
  • HLS 流重新混合为 MP4,因此到达库中的是普通文件,而不是片段的文件夹。
  • 下载检查器,在您开始之前报告链接的实际大小、类型和恢复支持。
  • 所有内容都位于文件应用程序可以看到的普通文件夹中

免费额度因平台而异:在 iPhone 和 iPad 上,少量通行证可通过您自己开始的奖励短视频充值;在 Mac 上,根本没有广告,每日固定计数。 Pro 消除了对每台设备的限制。

常见问题

全部问题

继续阅读

你的媒体库,终于汇聚一处。

免费下载。无需账号或注册;完整功能都在免费版里。

现已上架 App Store