三行代码,提升分享 IPFS 内容的下载速度

这个需要安装 2025 以上版本才能使用

ipfs init --profile server,unixfs-v1-2025
ipfs config Import.HashFunction blake3
ipfs config Import.UnixFSHAMTDirectorySizeThreshold 1MiB

UnixFSHAMTDirectoryMaxFanout 可修改也可不修改

ipfs config Import.UnixFSHAMTDirectoryMaxFanout 1024

或者修改 Import

"Import": {
    "BatchMaxNodes": null,
    "BatchMaxSize": null,
    "CidVersion": null,
    "FastProvideRoot": null,
    "FastProvideWait": null,
    "HashFunction": null,
    "UnixFSChunker": null,
    "UnixFSDirectoryMaxLinks": null,
    "UnixFSFileMaxLinks": null,
    "UnixFSHAMTDirectoryMaxFanout": null,
    "UnixFSHAMTDirectorySizeThreshold": null,
    "UnixFSRawLeaves": null
}

改为

"Import": {
    "CidVersion": 1,
    "HashFunction": "blake3",
    "UnixFSChunker": "size-1048576",
    "UnixFSDirectoryMaxLinks": 0,
    "UnixFSFileMaxLinks": 1024,
    "UnixFSHAMTDirectoryMaxFanout": 1024,
    "UnixFSHAMTDirectorySizeThreshold": "1MiB",
    "UnixFSRawLeaves": true
}

如果不切换 hash 为 blake3,需要将 CidVersion 设置为 1,且 UnixFSRawLeaves 设置为 true

unixfs-v1-2025 配置采用 1 MiB 的数据块和每个节点 1024 个链接的设置,相比之下。
旧版配置仅使用 256 KiB 的数据块和 174 个链接。这带来了以下优势:
更浅的 DAG 树结构(对于 1 TiB 的文件,新配置为 3 层,而旧参数则需 4 层)
处理相同内容时,总节点数减少约 4 倍
在大文件中进行随机访问和寻址的速度更快(遍历树结构所需的往返次数更少)
需要通告的 CID 数量更少,从而减轻了 Amino DHT 等公共路由基础设施的负载压力