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 在 缓存
11,288 每月下载量
在 3 个 Crates 中使用 (2 个直接使用)
46KB
827 行
AsyncHttpRangeReader
一个提供 AsyncHttpRangeReader
结构体的 Crates,允许使用范围请求流式读取 HTTP 上的文件。
lib.rs
:
此库提供 AsyncHttpRangeReader
类型。
它允许在 HTTP 上流式传输文件的同时也允许随机访问。此类型实现了 AsyncRead
和 AsyncSeek
。这是通过使用范围请求来支持的。每次单独读取都会使用 HTTP 范围请求请求文件的一部分。
请求大量的小读取可能会相对较慢,因为每次读取都需要执行 HTTP 请求。为了减轻这个问题,提供了 AsyncHttpRangeReader::prefetch
。使用此方法,您可以 预取 一部分字节,这将作为背景流式传输。如果读取操作正在读取已(预)获取的范围,它将从内部缓存中流式传输。
内部,AsyncHttpRangeReader
存储一个内存映射,它允许稀疏地将数据读入内存,而不需要文件的所有内存都驻留在内存中。
此库的主要用例是能够以稀疏的方式通过 HTTP 流式传输 zip 存档,但其设计是通用的。
依赖关系
~7–18MB
~256K SLoC