#async-http #range #requests #http-request #streaming #reading #memory

asynchttprangeReader

使用范围请求在 HTTP 上流式读取文件的库

9 个版本 (破坏性)

0.8.0 2024 年 5 月 7 日
0.7.1 2024 年 4 月 10 日
0.7.0 2024 年 2 月 23 日
0.6.1 2024 年 2 月 17 日
0.1.0 2023 年 10 月 22 日

#56缓存

Download history 2308/week @ 2024-04-22 1753/week @ 2024-04-29 2500/week @ 2024-05-06 2747/week @ 2024-05-13 2626/week @ 2024-05-20 1987/week @ 2024-05-27 3012/week @ 2024-06-03 2074/week @ 2024-06-10 1527/week @ 2024-06-17 2211/week @ 2024-06-24 1919/week @ 2024-07-01 2084/week @ 2024-07-08 2008/week @ 2024-07-15 2885/week @ 2024-07-22 2861/week @ 2024-07-29 3461/week @ 2024-08-05

11,288 每月下载量
3 个 Crates 中使用 (2 个直接使用)

MIT 许可

46KB
827

AsyncHttpRangeReader

Crates.io docs.rs GitHub Workflow Status (branch) GitHub

一个提供 AsyncHttpRangeReader 结构体的 Crates,允许使用范围请求流式读取 HTTP 上的文件。


lib.rs:

此库提供 AsyncHttpRangeReader 类型。

它允许在 HTTP 上流式传输文件的同时也允许随机访问。此类型实现了 AsyncReadAsyncSeek。这是通过使用范围请求来支持的。每次单独读取都会使用 HTTP 范围请求请求文件的一部分。

请求大量的小读取可能会相对较慢,因为每次读取都需要执行 HTTP 请求。为了减轻这个问题,提供了 AsyncHttpRangeReader::prefetch。使用此方法,您可以 预取 一部分字节,这将作为背景流式传输。如果读取操作正在读取已(预)获取的范围,它将从内部缓存中流式传输。

内部,AsyncHttpRangeReader 存储一个内存映射,它允许稀疏地将数据读入内存,而不需要文件的所有内存都驻留在内存中。

此库的主要用例是能够以稀疏的方式通过 HTTP 流式传输 zip 存档,但其设计是通用的。

依赖关系

~7–18MB
~256K SLoC