• Stars
    star
    980
  • Rank 46,713 (Top 1.0 %)
  • Language
    JavaScript
  • Created about 4 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A front-end CDN based on ServiceWorker

freecdn

npm version

freecdn 是一个纯前端的 CDN 解决方案,用于降低网站流量成本,同时提高网站稳定性、安全性,并且无需修改现有的业务逻辑。

最近更新

新增文件合并功能,可将大文件切割成多个小文件,运行时自动合并。从而能突破免费 CDN 单个文件体积限制。

新增资源包功能,可将多个小文件合并成一个资源包,运行时从中提取。查看更多

功能亮点

自动选择公共库

互联网上有很多免费的公共库 CDN,例如 cdnjsjsdelivrunpkg,但哪个最稳定,始终没有明确的答案。

现在你无需纠结这个问题,随意选择即可。freecdn 可根据用户的网络状况,实时切换到合适的 CDN。查看更多

全站 Hash 校验

现代浏览器可通过 SRI 校验资源完整性,降低第三方站点的风险。但 SRI 也存在一些不足,例如支持的类型太少、需要修改 HTML、缺少备用机制。

freecdn 能校验任意类型的资源,例如图片是否被篡改,从而提升内容安全;无需修改 HTML,并且所有 Hash 统一维护,方便使用和更新;即使校验失败,自动切换到备用资源,避免损坏业务。查看更多

充分利用图床

网站图片很耗流量,不少人将图片上传到图床、相册等第三方站点,充当免费 CDN。但这也存在诸多难以预测的情况,例如图片被删、限制外链、添加水印、有损压缩、限速等等。

现在你无需担心这些问题。你只需将图片备份到多个图床,freecdn 会依次尝试,直到获得预期内容。此外,不仅是图片,任意类型的文件都可通过图床加速!查看更多

网站离线运行

任何网站都无法避免网络故障,例如机房故障、DNS 故障、运营商丢包、DDOS 攻击,导致网站无法稳定访问。

freecdn 支持网站离线运行。用户只有首次访问依赖你的服务器,之后即使服务器关机,前端程序也能从备用站点加载最新的页面和资源,成为一个不依赖中心的网站。查看更多

WebP 无缝兼容

相比 JPG/PNG/GIF 等格式,WebP 有着更高的压缩率,但并非所有浏览器都支持,因此需处理兼容性。传统的无缝兼容需要后端支持,服务器根据 Accept 请求头决定是否返回 WebP 格式,从而实现同个 URL 返回不同格式的效果。

freecdn 可在前端实现这个功能,无需后端支持。查看更多

资源快速更新

HTTP 的缓存时间,一直是个头疼的问题。时间太短,性能不够好;时间太长,更新不及时。因此很多网站都有自己的资源更新方案。

freecdn 使用独特的更新机制,只需更新一个清单文件,就能更新所有资源。查看更多

功能演示

常用文档

兼容问题

freecdn 前端脚本依赖 Service Worker API,并使用了 ES2020 语法和特性。不过即使浏览器不支持也没问题,页面仍从原始 URL 加载资源。

如果你的网站本身也有 Service Worker,请参考 共享接入模式

由于 Service Worker 只能在安全环境中开启,因此你的站点必须是 HTTPS。本地测试(127.0.0.1/localhost)时可以使用 HTTP。

相关组件

前端脚本

freecdn-js:https://github.com/EtherDream/freecdn-js

页面引用的脚本体积极小,压缩后只有几百字节,最大程度减少你的网站流量。

公共库

freecdn-publib:https://github.com/EtherDream/freecdn-publib

公共库收集了十几个 CDN 站点 1000 多万条 URL 记录。

更新服务

freecdn-update-svc:https://github.com/EtherDream/freecdn-update-svc

使用更新推送服务,长缓存资源也能快速更新。

项目进展

目前基本功能已实现,处于公开测试阶段。如果你对该项目感兴趣,可以在个人博客、特效演示等站点试验,期待反馈存在的问题,并提供更好的建议。

本项目将长期维护。

新功能...

目前开发中的功能:

  • 更智能的站点选择算法(目前规则还很简单,需进一步完善)

  • 纯前端日志(通过 Service Worker 采集用户访问日志,发送到开发者提供的接口。适用于 GitHub Pages 等无法查看详细日志的站点)

  • 子集搜索(如果待搜索文件是公共资源的一部分,工具生成裁剪范围;如果公共资源是待搜索文件的绝大部分,补充缺失的前缀或后缀数据)

  • HTTP over WebRTC(将内网中的设备作为网站节点,分担流量和计算量)

License

MIT

More Repositories

1

jsproxy

An online proxy based on ServiceWorker
Shell
9,309
star
2

web2img

Bundle web files into a single image
JavaScript
1,267
star
3

web-frontend-magic

#前端黑魔法# 整理
783
star
4

http-server-online

Start a local HTTP server without any tools, just open a web page.
JavaScript
629
star
5

jsproxy-browser

jsproxy 浏览器端程序
JavaScript
286
star
6

js-port-knocking

Web 端口敲门的奇思妙想
HTML
237
star
7

myppt

189
star
8

headphone-morse-transmitter

Send Morse code via ⏸️ ⏯️ ⏮️
HTML
177
star
9

QuickReader

An ultra-high performance stream reader for browser and Node.js
TypeScript
168
star
10

WebScrypt

a fast and lightweight scrypt hash algorithm for browser
JavaScript
152
star
11

decent-cdn

网站 CDN 去中心化尝试
JavaScript
130
star
12

https_hijack_demo

HTTPS Frontend Hijack
JavaScript
92
star
13

mitm-http-cache-poisoning

HTTP Cache Poisoning Demo
JavaScript
87
star
14

sw-sec

Service Worker 安全探索
HTML
73
star
15

str2gbk

JS 字符串转 GBK 编码超轻量实现
JavaScript
53
star
16

toh

TCP over HTTP. 隐藏网站的管理服务
JavaScript
43
star
17

cookie_hijack_demo

MITM cookie sniffer
JavaScript
35
star
18

timelock

A time-lock puzzle designed for browsers
TypeScript
27
star
19

freecdn-js

freecdn browser side files
TypeScript
26
star
20

xss_ghost

XSS 跨窗口劫持
JavaScript
20
star
21

proof-of-work-hashcash

Proof-of-Work Hashcash demo
JavaScript
17
star
22

gzip-js-injector

GZIP 页面零开销注入 JS 演示
JavaScript
14
star
23

6502-to-js-test

HTML
9
star
24

mini-program-pack

小程序静态资源打包和压缩
JavaScript
9
star
25

freecdn-publib

public lib database for freecdn
JavaScript
6
star
26

freecdn-update-svc

TypeScript
6
star
27

test

just test
JavaScript
4
star
28

jsproxy-bin

3
star
29

js-anti-ddos

使用浏览器端 JS 防御 DDOS 攻击
3
star
30

jsproxy-localtest

HTML
3
star
31

etherdream.github.io

2
star
32

setupsw

2
star
33

parallel-pbkdf2

The best password hashing solution in browser
HTML
2
star
34

cloudshellproxy

1
star
35

free-host-test

JavaScript
1
star
36

webworker.swc

HTML5-style Worker For Flash
ActionScript
1
star