本文来自公众号:开发者码神 。 欢迎关注第一时间阅读精华文章。
我们都知道如果图片或者视频存在自己的服务器上不光会占用很大的带宽,也很影响网站和或APP的访问速度。
但是又不想单独花钱买对象存储和CDN,让你的B2B/B2C网站免费使用图片/视频存储,下面我介绍一种方法。
对象存储
R2是Cloudflare推出的非结构性 Object storage (对象存储)服务。本文将介绍我推荐 R2 的原因以及与Picgo联动的使用方式。www.cloudflare.com/zh-cn/
为什么选择R2
Cloudflare 是一家服务范围遍及全球的网络资源供应商。因此对象存储自然也会成为其主打服务之一
- 选择R2的理由有以下:
- 10GB免费空间
- 无流量费
- 免费 CDN 节点及 DDos 防护服务
- 国际化
- 兼容S3
- 无政治原因的审查
以下是 R2 的具体费用:
-
免费配额:
- 存储:10 GB/月
- A 类操作:每月 100 万次(上传操作)
- B 类操作:每月 1000 万次(下载与访问操作)
-
付费费率:
- 存储:$0.015/GB 超出部分
- A 类操作:$4.50/百万请求
- B 类操作:$0.36/百万请求
这意味着对于一个普通的图床应用,10GB 存储和 100 万次上传、1000 万次访问已经足够。如果你绑定自定义域名,并通过 Cloudflare CDN 进行缓存配置,还可以进一步减少请求次数,防止恶意刷请求。
Picgo
PicGo: 一个用于快速上传图片并获取图片 URL 链接的工具
PicGo 本体支持如下图床:
-
七牛图床v1.0 -
腾讯云 COS v4\v5 版本v1.1 & v1.5.0 -
又拍云v1.2.0 -
GitHubv1.5.0 -
SM.MS V2v2.3.0-beta.0 -
阿里云 OSSv1.6.0 -
Imgurv1.6.0
教程
设置 Cloudflare R2
- 开通 Cloudflare 账户并启用 R2
首先,确保你拥有一个 Cloudflare 账户。登录后,点击右上角选择语言为中文,便于操作。
在 Cloudflare 控制面板的左侧栏找到 R2,点击进入并开通 R2 服务。开通时可以绑定支持外币支付的信用卡,或者使用 PayPal(中国区 PayPal 也是支持的)。
- 创建 R2 存储桶
- 进入 R2 控制台,选择 创建存储桶。你可以自定义存储桶名称,例如
my-image-bucket。
- 选择区域时,建议选择北美地区或欧洲地区,而非亚太地区。亚太地区虽然距离较近,但国际访问速度可能受限。
- 开启 R2 子域名
- 存储桶创建完成后,进入存储桶设置,找到并开启 R2.dev 子域名。这样,Cloudflare 会为你的存储桶分配一个默认的子域名。
通过这个子域名,你可以直接访问存储桶中的资源。如果你有自定义域名,也可以绑定该域名,并使用 Cloudflare 提供的缓存、限速等功能。如果不需要自定义域名,Cloudflare 分配的默认子域名完全可以满足你的需求。
- 开启 API 访问
- 回到 R2 控制台概述页面,点击 管理 R2 API 令牌。
- 创建 API 令牌,并确保赋予对象 读写 权限。在 API 令牌设置中可以选择永久有效期。
生成的 访问密钥 ID 和 机密访问密钥 请妥善保存。这些密钥只会显示一次,之后无法再次查看。如果遗失,可以重新生成。
使用 PicGo 进行图片上传
- 安装 PicGo
前往 PicGo 官方 GitHub 下载适合你系统的 PicGo 客户端并安装。
- 安装 PicGo S3 插件
PicGo 原生不支持 Cloudflare R2,但 R2 的 API 接口与 AWS S3 兼容,因此我们可以通过安装 S3 插件来支持 R2。
- 在 PicGo 客户端的 插件设置 中搜索 S3,并安装
picgo-plugin-s3插件。
- 配置 PicGo 使用 R2 图床
安装完成后,进入 PicGo 图床设置,选择 Amazon S3 作为图床类型。然后填入以下配置信息:
- 应用密钥 ID:填写之前保存的 访问密钥 ID。
- 应用密钥:填写之前保存的 机密访问密钥。
- 桶名:输入你创建的 R2 存储桶名称,例如
my-image-bucket。 - 自定义节点:在 Cloudflare R2 存储桶设置页面找到 S3 API URL,填入该 URL,类似于
https://<account-id>.``r2.cloudflarestorage.com。 - 自定义域名(如果有):填入你的自定义域名加存储桶名称,例如
https://my-domain.com/my-image-bucket。如果没有自定义域名,可以使用 Cloudflare 分配的 R2 子域名。
完成这些配置后,你可以使用 PicGo 上传图片到 Cloudflare R2。
自定义域名配置(可选)
如果你已经在 Cloudflare 上托管了域名,可以为你的存储桶绑定自定义域名:
- 绑定自定义域名 在 Cloudflare 控制台的 R2 存储桶设置中填写你想绑定的二级域名,Cloudflare 会自动完成 DNS 映射配置。
- 关闭 R2.dev 子域名 如果你使用了自定义域名,建议关闭默认的 R2.dev 子域名。
最后,别忘了在 PicGo 中也同步更新自定义域名配置。
使用 PicList 进行图片管理(可选)
除了 PicGo,推荐使用 PicGo 的二次开发版本 PicList。PicList 支持图片的有损/无损压缩、格式转换和水印添加,还能直接管理你上传的文件,非常适合需要更高级图床管理功能的用户。
总结
通过 Cloudflare R2 和 PicGo,你可以轻松搭建一个免费、高效的图床服务。Cloudflare R2 提供了全球 CDN 加速、无出口带宽费的优势,再加上简单的 PicGo 工具,你可以快速上传、管理和分享图片,完全不需要支付高额的存储费用。