sw-p2p-engine: SW P2P Engine 采用最先进的HTML5技术——WebRTC来做点对点传输,ServiceWorker来代理网络请求,还有IndexedDB来缓存数据,打造了一个去中心化的静态资源加速网络

English | 简体中文

cdnbye logo webrtc logo

[](#%E7%BD%91%E7%AB%99%E9%9D%99%E6%80%81%E8%B5%84%E6%BA%90p2p%E5%8A%A0%E9%80%9F%E7%A5%9E%E5%99%A8)网站静态资源P2P加速神器

npm jsdelivr

SW P2P Engine 采用最先进的HTML5技术——WebRTC来做点对点传输,ServiceWorker来代理网络请求,还有IndexedDB来缓存数据,打造了一个去中心化的静态资源加速网络。在不影响用户体验的前提下,利用终端设备的闲置带宽和少量的磁盘空间,创造一个可无限扩展的P2P网络,大幅节省网站的CDN成本。

[](#%E7%89%B9%E6%80%A7)特性

  • 浏览器原生支持,不需要安装任何插件,采用仿BT算法,在线人数越多效果越好
  • 支持大部分静态文件类型,包括js、css、图片和音频等
  • 数据加密传输
  • 浏览器不支持WebRTC时无缝切换到HTTP下载模式
  • 可与所有CDN搭配使用,无需改造服务端
  • Tracker服务器根据访问IP的ISP、地域等进行智能调度

[](#%E6%B5%8F%E8%A7%88%E5%99%A8%E6%94%AF%E6%8C%81%E6%83%85%E5%86%B5)浏览器支持情况

由于WebRTC已成为HTML5标准,目前大部分主流浏览器都已经支持。兼容性取决于浏览器是否支持 WebRTC, ServiceWorker 和 IndexedDB。

兼容性

Chrome

Firefox

Mac Safari

安卓微信/QQ

Opera

Edge

iOS Safari

IE

WebRTC

Service Worker

IndexedDB

SwarmCloud

[](#%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C)准备工作

[](#%E7%BB%91%E5%AE%9A%E5%9F%9F%E5%90%8D)绑定域名

访问https://www.cdnbye.com/oms,注册并绑定域名。

[](#%E7%BD%91%E7%AB%99%E8%BF%81%E7%A7%BB%E5%88%B0https)网站迁移到HTTPS

由于 Service Worker 需要在HTTPS下才能生效,请确保你的网站已经迁移到HTTPS。

你可以使用 Let's Encrypt 来生成免费的证书。请参考 这里 的教程。

[](#%E9%83%A8%E7%BD%B2-service-worker)部署 Service Worker

ServiceWorker 是实现P2P加速的关键。只要将 sw.js 部署到网站的根目录即可,如 https://yourwebsite.com/sw.js
同样, 可以自定义配置或者采用默认配置。

[](#%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90)快速集成

拷贝 sw.js 到服务器的域名根目录, 并确保可以通过 https://yourwebsite.com/sw.js 访问。

[](#%E8%87%AA%E5%AE%9A%E4%B9%89%E9%9B%86%E6%88%90)自定义集成

在服务器的域名根目录创建一个 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之间智能切换。

[](#%E9%9B%86%E6%88%90-p2p-engine)集成 P2P Engine

[](#%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90-1)快速集成

如果不需要自定义配置,只需要在网站主页 index.html 加上一行脚本即可:

<head>
<script src="https://cdn.jsdelivr.net/npm/swarmcloud-sw@latest?auto=true";></script>
...
</head>

注意,参数必须是"auto=true"才会自动安装。

[](#%E8%87%AA%E5%AE%9A%E4%B9%89%E9%9B%86%E6%88%90-1)自定义集成

引入脚本,并创建 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...

[](#api%E6%96%87%E6%A1%A3)API文档

参见 API.md

[](#%E5%BC%80%E6%BA%90%E8%B5%9E%E5%8A%A9%E8%AE%A1%E5%88%92)开源赞助计划

所有开源项目或者技术博客等非营利性站点,均可申请永久免费使用,请联系客服开通服务。

[](#%E7%9B%B8%E5%85%B3%E9%A1%B9%E7%9B%AE)相关项目

[](#faq)FAQ

我们收集了一些常见问题。在报告issue之前请先查看一下。

[](#%E8%81%94%E7%B3%BB%E6%88%91%E4%BB%AC)联系我们

邮箱:service@cdnbye.com


原网址: 访问
创建于: 2021-03-10 11:27:11
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论