English | 简体中文
SW P2P Engine 采用最先进的HTML5技术——WebRTC来做点对点传输,ServiceWorker来代理网络请求,还有IndexedDB来缓存数据,打造了一个去中心化的静态资源加速网络。在不影响用户体验的前提下,利用终端设备的闲置带宽和少量的磁盘空间,创造一个可无限扩展的P2P网络,大幅节省网站的CDN成本。
由于WebRTC已成为HTML5标准,目前大部分主流浏览器都已经支持。兼容性取决于浏览器是否支持 WebRTC, ServiceWorker 和 IndexedDB。
兼容性 | Chrome | Firefox | Mac Safari | 安卓微信/QQ | Opera | Edge | iOS Safari | IE |
---|---|---|---|---|---|---|---|---|
WebRTC | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ |
Service Worker | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ |
IndexedDB | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ |
SwarmCloud | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ |
访问https://www.cdnbye.com/oms
,注册并绑定域名。
由于 Service Worker 需要在HTTPS下才能生效,请确保你的网站已经迁移到HTTPS。
你可以使用 Let's Encrypt 来生成免费的证书。请参考 这里 的教程。
ServiceWorker 是实现P2P加速的关键。只要将 sw.js 部署到网站的根目录即可,如 https://yourwebsite.com/sw.js
可以自定义配置或者采用默认配置。
拷贝 sw.js 到服务器的域名根目录, 并确保可以通过 https://yourwebsite.com/sw.js 访问。
在服务器的域名根目录创建一个 sw.js 文件,并引入 PeerWorker ,创建实例:
// import peer-worker into service worker
self.importScripts('https://cdn.jsdelivr.net/npm/swarmcloud-sw@latest/dist/peer-worker.min.js');
var worker = new PeerWorker({
version: 1,
logLevel: 'warn',
allowOrigins: ['https://third-party-site.com'], // 允许加速的第三方Origin白名单,请参考:https://www.cdnbye.com/cn/views/sw/API.html#%E7%AC%AC%E4%B8%89%E6%96%B9%E8%B5%84%E6%BA%90%E5%8A%A0%E9%80%9F
});
worker.register();
部署完成后,SwarmCloud 的 ServiceWorker 将拦截全站的网络请求,并在P2P和CDN之间智能切换。
P2P Engine 用于启动 ServiceWorker 并运行P2P调度逻辑。同样, 可以自定义配置或者采用默认配置。
如果不需要自定义配置,只需要在网站主页 index.html 加上一行脚本即可:
<head>
<script src="https://cdn.jsdelivr.net/npm/swarmcloud-sw@latest?auto=true"></script>
...
</head>
注意,参数必须是"auto=true"才会自动安装。
引入脚本,并创建 P2PEngineSW 实例,该实例可以自定义配置:
<head>
<script src="https://cdn.jsdelivr.net/npm/swarmcloud-sw@latest"></script>
...
</head>
<script>
var engine = new P2PEngineSW({
logLevel: 'debug',
swFile: 'sw.js', // service worker file name
swScope: './', // service worker scope
swEnabled: true, // enable or disable service worker
});
engine.registerServiceWorker().then(function (registration) {
console.info('ServiceWorker registration successful with scope: ', registration.scope);
if (P2PEngineSW.isSupported()) {
engine.start();
}
}).catch(function(err) {
console.info('ServiceWorker registration failed ', err)
})
</script>
也可以通过npm引入:
$ npm install swarmcloud-sw
import P2PEngineSW from 'swarmcloud-sw';
// Create P2PEngineSW instance...
打来调试控制台,如果有打印 "ServiceWorker registration successful with scope" 则表示已正常工作。
参见 API.md
所有开源项目或者技术博客等非营利性站点,均可申请永久免费使用,请联系客服开通服务。
我们收集了一些常见问题。在报告issue之前请先查看一下。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型