LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 行情分析 > IPFS官方技术更新|js-ipfs0.44.0版本正式发布

IPFS官方技术更新|js-ipfs0.44.0版本正式发布

2020-05-26 四块科技 来源:区块链网络

版本亮点

可取消的请求和新的浏览器数据存储

[email protected]已经推出,支持取消请求,为浏览器提供更精简、更有效的数据存储!

可删除的请求

用户应该能够取消长时间的异步API操作。举个例子,如果你是CID从网络获取内容,CID不是resolveable,您应该能够为请求设置一个超时值,之后的内容将不再是寻求和控制代码将返回错误信息描述发生了什么。

这并不像在JavaScript中看起来那么简单,因为承诺是从API调用返回来解析一段内容的,而承诺规范中没有包含取消承诺的内容。

但是,浏览器fetch API有一个AbortSignal的概念,它可以用来中止网络请求。它们通过一个AbortController进行交互:

const controller = new AbortController()setTimeout(() => { ?controller.abort()}, 1000)try { ?await result = fetch('http://example.com', { ? ?signal: controller.signal ?})} catch (err) { ?console.err(err) // prints: user aborted the request}

我们采用了这种方法,并将其集成到每个API调用中,因此现在可以使用AbortControllers来取消请求!我们还使用这个机制为每个API调用添加一个timeout选项,它在内部使用一个AbortSignal来停止请求,并在指定的时间之后抛出一个TimeoutError:

const cid = new CID('QmWillNeverResolve')try { ?await ipfs.get(cid, { ? ?timeout: 1000// abort after 1000ms ?})} catch (err) { ?console.err(err) // err is a TimeoutError}

也可以自己滚动:

const cid = new CID('QmWillNeverResolve')const controller = new AbortController()setTimeout(() => { ?controller.abort()}, 1000)try { ?await ipfs.get(cid, { ? ?signal: controller.signal ?})} catch (err) { ?console.err(err)}

AbortSignal沿着调用堆栈一直传递到支持IPFS的libp2p和ipld组件。在这个初始版本中,IPFS层支持超时,在未来的版本中,libp2p和ipld还将使用AbortSignal释放资源,并执行任何其他必要的清理,如果请求成功完成,则会执行这些清理。

新的浏览器数据存储

[email protected]为浏览器带来了一个新的数据存储。在浏览器中,所有块和其他返回的数据目前都存储在IndexedDB中,因为这是在编写本文时保存和查询大量用户数据的惟一方法。

在节点和go-ipfs中,LevelDB一直是应用程序数据的首选数据存储库(尽管块已经存储在文件系统中),而go-ipfs正在向Badger迁移。

由此产生了interface-datastore——一种用于存储由IPFS使用的数据存储所实现的键/值对的规范。在浏览器中,这是由level-js支持的数据存储层,而level-js又由IndexedDB支持。

为了删除这里的几个层,我们创建了datastore-idb,它实现了接口-数据存储规范,由IndexedDB支持,无需通过level。

这是什么意思?

新的数据存储更小,更快,升级是无缝的,因为它仍然是IndexedDB的引线下:

datastore-idb?up?to?44%?faster?and69%?smallerbatch?idb?x?5.26?ops/sec?±4.57%?(29?runs?sampled)batch?level?x?2.92?ops/sec?±3.76%?(19?runs?sampled)Fastest?is?batch?idbsize?37.32KB?to?11.41KB

新功能

取消API调用(#2993)(2b24f59),关闭#3015

ipfs.block.put现在接受与go-ipfs #3015一致的pin参数

错误修正

修复浏览器脚本标记示例(#3034)(ee8b769),关闭#3027

不再在浏览器中生成包含所有IPLD格式的浏览器包(#3025)(e6079c1)

向dag传递超时时的错误类型。(# 3035)(026 a542)

移除节点全局变量和内建ins的使用,为浏览器绑定器自动停止(包括它们#2932)做好准备

源地图不再包含在生产版本ipfs/aegir#549中

接下来是什么?

查看js-ipfs项目路线图,其中包含未来落地的顺序组织的标题功能。

只有大的功能在路线图中被调用,预计在路线图项目之间会有很多小的漏洞修复发布!

非常感谢所有为这个版本做出贡献的人!

@ 5310(2条评论)

@achingbrain(55次提交,17个PR,3个问题,33条评论)

@alanshaw(1问题,3评论)

@aphelionz(2条评论)

@AuHau(1条评论)

@autonome(1条评论)

@bertrandfalguiere(1条评论)

@betamos(1个PR,1个问题,7条评论)

@bluelovers(1 PR,1条评论)

@carsonfarmer(1次提交)

@ codecov-io(1条评论)

@corporatepiyush(1期)

@dapplion(2条评论)

@dirkmc(2次提交)

@Gozala(5个问题,15条评论)

@hugomrdias(11提交,4 PR,1问题,17评论)

@jacobheun(8提交,2 PR,1问题,8评论)

@jakehemmerle(3条评论)

@koivunej(1条评论)

@lidel(1次提交,2条评论)

@mdtanrikulu(1问题,1条评论)

@mistakia(1个公关)

@npfoss(1次提交,1个PR,1个问题)

@ obo20(1次提交,1个PR,1条评论)

@oed(1条评论)

@RobertFischer(1条评论)

@robertkiel(1条评论)

@rvagg(1个PR,1条评论)

@ spasimir21(1问题,3评论)

@stensonb(1次提交,13个PR)

@thattommyhall(1 PR,3条评论)

@ typhu-xyz(1条评论)

@ vasco-santos(14次提交,15个PR,2个问题,16条评论)

@vmx(5提交,1 PR,2评论)

@welcome(19条评论)

@wemeetagain(2次提交,1个PR,3条评论)

—-

编译者/作者:四块科技

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...