我有一个目录,其中包含我添加到ipfs中的许多文件。 当我这样做时,我会得到目录中包含的文件的所有哈希的列表。
例如:
File1.txt QYNOSMSLDFKAL12345
File2.txt QYNOSMSLDFKAL12346
File3.txt QYNOSMSLDFKAL12347
我现在将目录的此ipfs哈希发布到ipns,并尝试获取File2.txt 通过使用以下网关链接:
http://ipfs.io/ipns/<ipns hash>/File2.txt
当有人尝试在网关上获取文件时,如何精确找到ipns哈希的位置? (以及随后包含在与该哈希链接的目录中的文件)
我问这个是因为我想知道在以下情况下会发生什么:
现在,我在以前哈希的目录中修改File1.txt。当我重新添加目录时,我注意到只有File1.txt的哈希值已更改,这很有意义。现在我有:
File1.txt QYNOSMSLDFKAL99999
File2.txt QYNOSMSLDFKAL12346
File3.txt QYNOSMSLDFKAL12347
我现在将其重新发布到与以前相同的ipns链接。
现在,当有人尝试获取ipfs网关先前提供的文件时,该文件没有更改-例如。 File2.txt-尝试查找此File2.txt时,网关是否必须从头开始,即使它的ipfs哈希值与以前相同,并且它的ipns链接也相同?
即。 http://ipfs.io/ipns/ / File2.txt
我要说的是,如果新目录中包含的大多数文件未更改,那么更新IPNS链接是否会产生大量开销?
预先感谢
汤姆
答案 0 :(得分:1)
如果您使用网关并使用包含IPNS的链接,则每次您查找链接时都会下载内容。最多可能会有几秒钟的缓存头。这是不可避免的,因为IPNS名称的值可以随时更改。
如果直接与IPFS进行交互,则解析/ipns/<ipns hash>/File2.txt
之类的路径是一个两步过程。首先,将IPNS名称转换为IPFS哈希。然后,将散列中的内容遍历到叶子。
因此,要解决上述路径,IPNS名称必须当前指向一个目录IPFS哈希,该哈希是一个名为File2.txt
的子对象的目录对象。
如果您不是使用网关,则本地IPFS守护程序会注意到,即使目录对象已更改,File2.txt
仍具有哈希值QYNOSMSLDFKAL12346
,并且< em>不再次下载。