IPFS网关有很多个,无论是谁都可以创建自己的IPFS网关:
- ipfs.io,IPFS官方维护
- cloudflare-ipfs.com,云服务商cloudflare维护
- zhouys.xyz,我运行在杭州的服务器上
- ipfs-gateway.xyz,我运行在硅谷的服务器上
- localhost:8080,本地
同一个content ID无论在哪都可以获取到同一个文件
当通过以上5个不同的网关请求content ID为 QmSu1tBmnvugUw1Mv1ajA6jpgqtTGJnqko9ghypMrjA8jN 的图片时,得到的图片都是一样的。我并没有事先将这张图片一一发到这几个服务器,这几个网关都是从同一个IPFS网络获取的文件。
可以使用下面5个链接分别尝试一下(第一个需要翻墙,最后一个要求在本地运行了go-ipfs)。
- https://ipfs.io/ipfs/QmSu1tBmnvugUw1Mv1ajA6jpgqtTGJnqko9ghypMrjA8jN
- https://cloudflare-ipfs.com/ipfs/QmSu1tBmnvugUw1Mv1ajA6jpgqtTGJnqko9ghypMrjA8jN
- http://zhouys.xyz/ipfs/QmSu1tBmnvugUw1Mv1ajA6jpgqtTGJnqko9ghypMrjA8jN
- http://ipfs-gateway.xyz/ipfs/QmSu1tBmnvugUw1Mv1ajA6jpgqtTGJnqko9ghypMrjA8jN
- http://localhost:8080/ipfs/QmSu1tBmnvugUw1Mv1ajA6jpgqtTGJnqko9ghypMrjA8jN
HTTP协议关注文件位置,IPFS协议关注文件本身
IPFS的content ID标志的是文件本身,而不是文件存储的位置,这是和HTTP协议的一个很大区别。
当我们访问简书的这篇文章时,这篇文章的链接标志的是这篇文章存储的位置。当我对文章进行更改,访问同样的链接,获取到的将是我改动之后的文章。
而如果使用IPFS网络发布文章,每次做更改,都需要告诉别人新的content ID。使用过去的content ID,只能获取到过去的文章。所以IPFS并不适合存储动态内容,虽然IPNS可以绕过这个问题。