内容提要
Rust社区的crates.io在快速增长,导致下载请求的扩展问题。为了解决这个问题,cargo将直接从static.crates.io CDN服务器下载crates。后端已经进行了改动,包括从日志文件中计算下载次数。这些改动预计将提高可靠性和速度。将联系非cargo构建系统更新其系统。旧的下载URL仍然可用。
延伸解读
下载计数方式变化的影响
crates.io 将下载计数从 API 服务器改为分析 CDN 日志文件。由于镜像站之前直接从 CDN 下载的请求未被计入,现在这些下载会被统计,导致大多数 crate 的下载量上升,小型 crate 的增幅尤为明显。对于下载量大的 crate,变化几乎不可见。这一调整可能影响开发者对 crate 流行度的判断,需注意数据口径已变。
对非 cargo 构建系统的提醒
部分非 cargo 构建系统未使用索引中的 config.json 来生成下载 URL,而是硬编码了旧地址。crates.io 团队将联系这些维护者协助更新。虽然旧 URL 仍可用,但这些系统无法享受 CDN 带来的速度与可靠性提升。使用此类工具的开发者应关注其更新,或考虑迁移到 cargo 以获取性能改进。
用户无需操作,但需留意时间点
从 2024 年 3 月 12 日起,cargo 将自动通过修改 config.json 指向 static.crates.io CDN,用户无需更改任何配置或系统。此举旨在解决 API 性能问题导致的下载缓慢,尤其改善北美以外用户的体验。用户只需确保 cargo 版本支持该变更,并关注后续性能监控结果。
Q&A
crates.io的下载请求增长了多少?
下载请求和包数量年增长2-3倍。
crates.io面临的主要挑战是什么?
主要挑战是所有下载请求通过crates.io API,导致扩展问题和下载缓慢。
cargo将如何改善下载速度?
从2024年3月12日起,cargo将直接从static.crates.io CDN服务器下载crates。
config.json文件将如何变化?
config.json文件将被修改,以指向CDN服务器,无需更改cargo或用户系统。
下载计数方式有什么变化?
下载计数方式已从API服务器转为分析CDN服务器的日志文件。
旧的下载URL会继续有效吗?
旧的下载URL仍然可用,但未更新的系统将错失性能提升。