精选的 WebAssembly CDN
Curated WebAssembly CDN
我正在考虑将 webassembly 用于一个新项目,这让我想知道:
有人知道正在为 webassembly 库策划 CDN 的联盟吗?理想情况下,这样的产品将通过缓存缩短加载时间,允许依赖注入的好处,并集中 encryption/security 行为,以便在量子计算出现问题时可以快速推出新算法。
如果没有,有没有人知道如何游说开始?
我知道很多库可以重新编译成 webassembly 下载,但这会使应用程序体积膨胀,并给每个商店带来额外的压力来管理他们的库消耗。
精选 CDN 的其他(但不太重要的)好处包括支持数据仓库的库的共享性能提升、数据库访问的共享性能提升、编码时强制分离关注点、显着缩小项目规模、简化接口合同通过 nuget 等。好处非常多。
此外,如果 webassembly 容器获得足够多的采用,这样的共享库可以作为一种工具,允许更无缝地过渡 to/from 不同的技术堆栈(可能统一 JAVA 流和 . NET linq 库)在与语言无关的明确目标下。 Webassembly 与语言无关。如果每项技术 platform/shop 构建自己的冗余库,这似乎是一种耻辱,这将比在开源审查下伪造的库更慢且更不可靠。
Ideally, such an offering would improve load times with caching
它在现代浏览器中并不像那样工作;出于安全原因,他们采用了一种称为双键 HTTP 缓存的技术(不幸的是,我不知道 link 有什么好的解释器,但这个应该很好用:https://github.com/shivanigithub/http-cache-partitioning/)。
这意味着来自 CDN 的任何资源都在请求它们的源下单独加载和存储,而不是像过去那样在各个网站之间共享。
因此,为您的特定应用程序实际编译所需的本机库会更好 - 这样您将受益于编译时优化,并且不会加载庞大库中任何未使用的部分或每个用户的框架。
但是,既然我们已经涵盖了性能方面,确实有一些尝试提供预编译的 Wasm 模块,主要是针对代码大小不像标准框架那样令人担忧的小型库。
如果您正在寻找旨在从 JavaScript 使用的 Wasm 库,那么 npm 的使用就像其他库一样,并且是一个方便的平台,因为您可以运送 JavaScript 包装器(例如Emscripten 或 wasm-bindgen 生成的代码)以及实际的本机代码。例如。只是快速搜索中的一个随机示例:https://www.npmjs.com/package/xsalsa20.
如果您希望发布使用 WASI API 构建的 Wasm 应用程序,那么您可能有兴趣看看 https://wapm.io/,它就是这样做的,并且发布了一堆预编译的应用程序。
TL;DR: 有一些包管理器和 CDN 允许发布 WebAssembly 库和应用程序,但这样做主要是为了方便,而不是性能;如果您关心性能和下载大小,那么您最好自己为您的特定应用编译本机库。
我正在考虑将 webassembly 用于一个新项目,这让我想知道:
有人知道正在为 webassembly 库策划 CDN 的联盟吗?理想情况下,这样的产品将通过缓存缩短加载时间,允许依赖注入的好处,并集中 encryption/security 行为,以便在量子计算出现问题时可以快速推出新算法。
如果没有,有没有人知道如何游说开始?
我知道很多库可以重新编译成 webassembly 下载,但这会使应用程序体积膨胀,并给每个商店带来额外的压力来管理他们的库消耗。
精选 CDN 的其他(但不太重要的)好处包括支持数据仓库的库的共享性能提升、数据库访问的共享性能提升、编码时强制分离关注点、显着缩小项目规模、简化接口合同通过 nuget 等。好处非常多。
此外,如果 webassembly 容器获得足够多的采用,这样的共享库可以作为一种工具,允许更无缝地过渡 to/from 不同的技术堆栈(可能统一 JAVA 流和 . NET linq 库)在与语言无关的明确目标下。 Webassembly 与语言无关。如果每项技术 platform/shop 构建自己的冗余库,这似乎是一种耻辱,这将比在开源审查下伪造的库更慢且更不可靠。
Ideally, such an offering would improve load times with caching
它在现代浏览器中并不像那样工作;出于安全原因,他们采用了一种称为双键 HTTP 缓存的技术(不幸的是,我不知道 link 有什么好的解释器,但这个应该很好用:https://github.com/shivanigithub/http-cache-partitioning/)。
这意味着来自 CDN 的任何资源都在请求它们的源下单独加载和存储,而不是像过去那样在各个网站之间共享。
因此,为您的特定应用程序实际编译所需的本机库会更好 - 这样您将受益于编译时优化,并且不会加载庞大库中任何未使用的部分或每个用户的框架。
但是,既然我们已经涵盖了性能方面,确实有一些尝试提供预编译的 Wasm 模块,主要是针对代码大小不像标准框架那样令人担忧的小型库。
如果您正在寻找旨在从 JavaScript 使用的 Wasm 库,那么 npm 的使用就像其他库一样,并且是一个方便的平台,因为您可以运送 JavaScript 包装器(例如Emscripten 或 wasm-bindgen 生成的代码)以及实际的本机代码。例如。只是快速搜索中的一个随机示例:https://www.npmjs.com/package/xsalsa20.
如果您希望发布使用 WASI API 构建的 Wasm 应用程序,那么您可能有兴趣看看 https://wapm.io/,它就是这样做的,并且发布了一堆预编译的应用程序。
TL;DR: 有一些包管理器和 CDN 允许发布 WebAssembly 库和应用程序,但这样做主要是为了方便,而不是性能;如果您关心性能和下载大小,那么您最好自己为您的特定应用编译本机库。