freecdn 是一個純前端的CDN 解決方案,用於降低網站流量成本,同時提高網站穩定性、安全性,並且無需修改現有的業務邏輯。
新增文件合併功能,可將大文件切割成多個小文件,運行時自動合併。從而能突破免費CDN 單個文件體積限制。
新增資源包功能,可將多個小文件合併成一個資源包,運行時從中提取。查看更多
互聯網上有很多免費的公共庫CDN,例如cdnjs 、 jsdelivr 、 unpkg ,但哪個最穩定,始終沒有明確的答案。
現在你無需糾結這個問題,隨意選擇即可。 freecdn 可根據用戶的網絡狀況,實時切換到合適的CDN。查看更多
現代瀏覽器可通過SRI 校驗資源完整性,降低第三方站點的風險。但SRI 也存在一些不足,例如支持的類型太少、需要修改HTML、缺少備用機制。
freecdn 能校驗任意類型的資源,例如圖片是否被篡改,從而提升內容安全;無需修改HTML,並且所有Hash 統一維護,方便使用和更新;即使校驗失敗,自動切換到備用資源,避免損壞業務。查看更多
網站圖片很耗流量,不少人將圖片上傳到圖床、相冊等第三方站點,充當免費CDN。但這也存在諸多難以預測的情況,例如圖片被刪、限制外鏈、添加水印、有損壓縮、限速等等。
現在你無需擔心這些問題。你只需將圖片備份到多個圖床,freecdn 會依次嘗試,直到獲得預期內容。此外,不僅是圖片,任意類型的文件都可通過圖床加速!查看更多
任何網站都無法避免網絡故障,例如機房故障、DNS 故障、運營商丟包、DDOS 攻擊,導致網站無法穩定訪問。
freecdn 支持網站離線運行。用戶只有首次訪問依賴你的服務器,之後即使服務器關機,前端程序也能從備用站點加載最新的頁面和資源,成為一個不依賴中心的網站。查看更多
相比JPG/PNG/GIF 等格式,WebP 有著更高的壓縮率,但並非所有瀏覽器都支持,因此需處理兼容性。傳統的無縫兼容需要後端支持,服務器根據Accept 請求頭決定是否返回WebP 格式,從而實現同個URL 返回不同格式的效果。
freecdn 可在前端實現這個功能,無需後端支持。查看更多
HTTP 的緩存時間,一直是個頭疼的問題。時間太短,性能不夠好;時間太長,更新不及時。因此很多網站都有自己的資源更新方案。
freecdn 使用獨特的更新機制,只需更新一個清單文件,就能更新所有資源。查看更多
使用免費CDN 加速公共資源
自動切換故障CDN
更新快速生效
使用免費CDN 加速任意資源
使用免費CDN 加速清單文件
網站離線運行
WebP 自動適配
? 多個小文件合併成資源包
將大文件切分成多個小文件
POST 請求代理
命令行工具
透明接入模式
清單文件格式
解碼參數列表
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(將內網中的設備作為網站節點,分擔流量和計算量)
MIT