利用JSDelivr和Github Action白嫖CDN
[toc]
在这篇文章中提到了免费图床 sm.ms 的不稳定性,虽然可用动态生成的方式画简单的图表,但对于复杂的图片,图床是必要的,由于对国内图床的不信任以及国外图床的不稳定性,选择用发布 NPM 包的方式白嫖 CDN 加速。
jsDelivr 与 NPM
jsDelivr由ProspectOne维护的公共库,使用的融合 CDN 技术,由 Cloudflare、Fastly、StackPath、QUANTIL 等 CDN 供应商提供了全球超过 750 个 CDN 节点。jsDelivr 在中国大陆也拥有超过数百个节点,因为 jsDelivr 拥有正规的ICP 备案,解决了中国大陆的访问速度优化,实现真正的全球极速低延迟体验。jsDelivr 是免费的、不限制带宽的,可以加速 NPM、Github 内的文件。
同时也可利用国内外各大厂商提供的镜像 CDN,如知乎、饿了么、Unpkg等
eg:
- https://npm.elemecdn.com/gdpooo@0.0.1/rawimg/0008.webp
- https://gcore.jsdelivr.net/npm/gdpooo@0.0.1/rawimg/0008.webp
- https://fastly.jsdelivr.net/npm/gdpooo@0.0.1/rawimg/0008.webp
- https://cdn.jsdelivr.net/npm/gdpooo@0.0.1/rawimg/0008.webp
- https://unpkg.com/gdpooo@0.0.1/rawimg/0008.webp
操作步骤
具体思路:用 Github 仓库存放静态文件资源,创建 Release,根据 jsDelivr 的要求,文件访问路径为:
1 | https://cdn.jsdelivr.net/npm/[package-name]@[release-version]/[filepath]/[filename].[suffix] |
准备仓库
新建或选择一个 GitHub 仓库,在仓库中新建 rawimg/.gitkeep
与 webpimg/.gitkeep
两个文件来保留空目录。
在仓库中新建package.json
文件,其中 name
表示 [package-name],version
为 [release-version](今后每次自动更新)
1 | { |
获取并配置 token
登录 https://npmjs.com ,点击 Access Tokens
-> 点击页面中的 Generate New Token
获取新的 token -> 选择 type 为 Automation
-> 点击 Generate Token
。
复制生成的 token 后进入仓库的 Setting
-> 点击 Security
下的 Secrets and variables
下的 Actions
-> 点击New repository secret
新建一个 Secret -> Secret Name 为 NPM_TOKEN
,Value 是复制的 NPM token,点击 Add secret
添加。
图片转换与发布
webp-batch-convert :webp 图片批量转换。将指定目录内 png/jpg/jpeg/bmp/gif 格式的图片批量转换为 webp 格式,减小图片尺寸。
在仓库的 Actions
中新增:
1 | name: NPM & WebP |
测试
将图片文件上传至仓库的 rawimg/
文件夹下,新建 Release,将自动修改版本号并发布 NPM 包,无需手动修改 package.json
,注意 Tag
不要重复。
等待一会后完成提交,查看提交的图片。