穷鬼套餐 第4章:数据为王 —— 免费数据库与对象存储
开篇:数据是应用的灵魂
在前三章中,我们已经拥有了域名、服务器和托管服务。但如果应用没有数据存储能力,就像一个失忆的人——每次刷新页面,一切都会重置。用户的注册信息、发表的内容、上传的图片……所有这些都需要持久化存储。
传统上,数据库和对象存储服务价格不菲。一个基础的云数据库实例每月可能要花费几十到上百美元,对象存储的流量费用更是让人肉疼。但在2025年,云服务商们的竞争已经白热化,免费套餐的慷慨程度让人惊叹。
本章将带你探索免费数据存储的世界——从传统的关系型数据库到现代化的NoSQL方案,从边缘数据库到对象存储服务。更重要的是,这些免费额度对个人项目和中小型应用来说,完全够用!
数据库服务全景图
现代数据库服务可以分为几大类:
数据库类型分类
1. 关系型数据库(SQL)
- 代表产品 :Supabase (PostgreSQL)、Neon、PlanetScale (MySQL)
- 适用场景 :需要复杂查询、事务处理、数据关系的应用
- 核心特点 :ACID保证、强一致性、SQL标准查询
2. NoSQL数据库
- 代表产品 :MongoDB Atlas、Cloudflare D1
- 适用场景 :灵活数据结构、高并发读写、快速迭代
- 核心特点 :文档存储、水平扩展、灵活Schema
3. 边缘数据库
- 代表产品 :Turso (SQLite)、Cloudflare D1
- 适用场景 :低延迟需求、全球分布式应用
- 核心特点 :数据靠近用户、毫秒级响应
4. 缓存数据库
- 代表产品 :Upstash Redis、Vercel KV
- 适用场景 :会话存储、速率限制、缓存层
- 核心特点 :内存存储、极快响应、键值对模型
免费PostgreSQL数据库:现代化的首选
PostgreSQL因其强大的功能和开源特性,成为现代Web应用的首选数据库。让我们看看三个最优秀的免费PostgreSQL服务。
1. Supabase —— 开源Firebase的完美替代
什么是Supabase?
Supabase不仅仅是一个数据库服务,它是一个完整的后端即服务(BaaS)平台,基于PostgreSQL构建,提供数据库、认证、存储、实时订阅等功能。
免费额度(永久)
- 500MB数据库存储 :足够存储数万条记录
- 500MB文件存储 :用于存储用户上传的图片、文件
- 2GB带宽/月 :数据库查询和文件下载流量
- 5万次月活跃用户 :认证功能的用户额度
- 50万次Edge Function请求 :无服务器函数调用
- 实时数据库连接 :200个并发连接
- 无限API请求 :没有查询次数限制
核心功能
- PostgreSQL数据库
- 完整的PostgreSQL 15功能
- 行级安全策略(RLS)
- 自动生成RESTful API
- 实时数据订阅
- 认证系统
- 邮箱/密码登录
- 第三方OAuth(Google、GitHub等)
- 魔法链接(Magic Link)
- 手机号验证
- 存储服务
- 类S3的对象存储
- 图片自动优化
- CDN分发
- 实时功能
- 数据库变更订阅
- 在线状态追踪
- 广播消息
最佳使用场景
- 全栈应用的一站式后端
- 需要实时功能的应用(聊天、协作工具)
- 需要用户认证的SaaS产品
- 快速原型开发
实际案例
GitHub上有超过50,000个使用Supabase的开源项目。一个典型案例是开源项目管理工具"Linear-like",使用Supabase的实时功能实现了毫秒级的多人协作更新,用户反馈延迟低于100ms。citation
2. Neon —— Serverless PostgreSQL的先锋
核心特点
Neon是专为现代Serverless应用设计的PostgreSQL服务,采用存储与计算分离的架构。
免费额度(永久)
- 512MB存储空间 :略大于Supabase
- 无限活动时间 :不会因为不活跃而暂停
- 3GB数据传输/月 :比Supabase更多
- 100小时计算时间/月 :约3.3小时/天
- 自动扩展 :根据负载自动调整
独特优势
- 分支功能 :像Git一样创建数据库分支
- 为每个Pull Request创建独立数据库
- 测试环境与生产环境完全隔离
- 分支之间可以快速切换
- 即时激活 :数据库在几毫秒内从休眠状态唤醒
- 时间旅行 :可以查询历史数据状态
适用场景
- Next.js、Remix等现代框架应用
- 需要数据库分支的团队开发
- Serverless架构应用
- 需要快速扩缩容的项目
性能表现
根据社区基准测试,Neon的冷启动时间约50ms,热查询响应时间与标准PostgreSQL相当。citation
3. PlanetScale —— MySQL的Serverless变革
核心特点
PlanetScale基于Vitess(YouTube使用的数据库架构)构建,提供Serverless MySQL服务。
免费额度
- 5GB存储空间 :最慷慨的免费存储
- 10亿次读取/月 :几乎无限制
- 1000万次写入/月 :足够大多数应用
- 自动备份 :每12小时一次
独特功能
- 无锁Schema变更 :在不停机的情况下修改表结构
- 分支工作流 :类似Git的数据库版本控制
- 全球分布 :数据自动复制到多个地区
- 自动扩展 :根据负载自动调整资源
适用场景
- 使用MySQL生态的项目
- 需要频繁Schema变更的应用
- 高并发读取场景
- 需要全球部署的应用
注意事项
PlanetScale于2024年初调整了免费政策,新用户需要绑定信用卡才能使用免费套餐,但不会自动扣费。
三大PostgreSQL服务对比
| 功能 | Supabase | Neon | PlanetScale |
|---|---|---|---|
| 数据库类型 | PostgreSQL | PostgreSQL | MySQL |
| 存储空间 | 500MB | 512MB | 5GB |
| 带宽 | 2GB/月 | 3GB/月 | 无限制 |
| 特色功能 | 认证+存储+实时 | 分支+时间旅行 | 无锁变更 |
| 计算限制 | 2个CPU | 100小时/月 | 无限制 |
| 最佳场景 | 全栈一站式 | Serverless应用 | 高并发读取 |
| 信用卡要求 | 否 | 否 | 是 |
免费NoSQL数据库:灵活的文档存储
MongoDB Atlas —— 文档数据库之王
免费额度(永久)
- 512MB存储空间 :可存储约10万条文档
- 共享RAM :512MB RAM(与其他用户共享)
- 无限连接数 :不限制并发连接
- 自动备份 :虽然是共享实例,但数据有保障
- 全球节点 :可选择香港、新加坡等亚太节点
核心优势
- 灵活的数据模型 :无需预定义Schema
- 强大的查询语言 :支持复杂的聚合查询
- 官方驱动支持 :几乎所有编程语言都有官方SDK
- Atlas Search :内置全文搜索功能
适用场景
- 数据结构频繁变化的项目
- 需要存储复杂嵌套结构的应用
- 内容管理系统(CMS)
- 快速原型开发
实际使用
MongoDB Atlas的免费套餐已运行多年,稳定性有保障。许多开源项目如Ghost博客系统默认推荐使用MongoDB Atlas。citation
Cloudflare D1 —— 边缘SQLite数据库
什么是D1?
D1是Cloudflare推出的全球分布式SQLite数据库,运行在Cloudflare的边缘网络上。
免费额度(永久)
- 5GB存储空间 :非常慷慨
- 每天500万次读取 :约每月1.5亿次
- 每天10万次写入 :约每月300万次
- 全球分布 :数据自动复制到全球节点
独特优势
- 超低延迟 :数据存储在离用户最近的节点
- 与Workers深度集成 :配合Workers使用性能最佳
- 零冷启动 :不存在数据库休眠问题
- 自动备份 :Cloudflare自动处理数据备份
适用场景
- 与Cloudflare Workers配合使用
- 需要极低延迟的全球应用
- 边缘计算场景
- 简单的数据存储需求
免费边缘数据库:Turso
Turso —— SQLite的Serverless革命
核心特点
Turso基于libSQL(SQLite的分支)构建,提供分布式SQLite服务。
免费额度(永久)
- 9GB存储空间 :最慷慨的免费存储之一
- 5亿次行读取/月 :远超其他服务
- 三个数据库实例 :可创建多个数据库
- 全球复制 :可选择多个部署区域
独特优势
- 嵌入式SQL :SQL查询在边缘直接执行
- 极快的读取速度 :本地缓存机制
- 兼容SQLite :可以使用熟悉的SQLite语法
- 低成本扩展 :超出免费额度后价格也很便宜
适用场景
- 边缘计算应用
- 需要SQLite简单性的项目
- 读多写少的场景
- 全球分布式应用
实际性能
社区测试显示,Turso的边缘查询延迟通常低于50ms,在读取密集型场景下表现优异。citation
免费缓存数据库:Redis服务
Upstash Redis —— Serverless Redis服务
免费额度(永久)
- 10,000次命令/天 :约每月30万次
- 256MB数据存储 :足够存储会话和缓存
- 全球复制 :可选择多个区域部署
- REST API :支持HTTP访问,无需TCP连接
核心功能
- Serverless架构 :按需付费,不用不收费
- REST API支持 :边缘函数也能轻松访问
- 持久化存储 :数据不会丢失
- 速率限制SDK :内置速率限制功能
适用场景
- 会话存储
- 速率限制
- 缓存层
- 实时排行榜
与Vercel KV对比
Vercel KV实际上基于Upstash构建,但Upstash直接注册可以获得更多免费额度。citation
免费对象存储:文件的安全港湾
对象存储用于保存图片、视频、文档等静态文件。让我们看看最好的免费选择。
1. Cloudflare R2 —— 零出口费用的革命
什么是R2?
Cloudflare R2是对标AWS S3的对象存储服务,最大特点是零出口费用——无论下载多少次,都不收取流量费。
免费额度(永久)
- 10GB存储空间 :可存储约5000张高清图片
- 每月100万次A类操作 :上传、列出操作
- 每月1000万次B类操作 :下载、删除操作
- 零出口费用 :无限制下载流量
这个免费额度意味着什么?假设你的网站有1万张图片,每张100KB,每天被访问1000次,使用R2完全免费!citation
核心优势
- S3兼容API :可以使用S3的所有工具和SDK
- 全球分发 :配合Cloudflare CDN性能极佳
- 零流量费 :这是最大的优势
- 自动备份 :Cloudflare处理数据冗余
适用场景
- 网站图床
- 静态资源托管(CSS、JS、字体文件)
- 用户上传的文件存储
- 备份和归档
性能表现
配合Cloudflare CDN使用,R2的全球平均访问延迟低于50ms,在中国大陆也有不错的访问速度。citation
2. Backblaze B2 —— 配合Cloudflare的最佳拍档
免费额度(永久)
- 10GB存储空间 :与R2相同
- 1GB下载流量/天 :约30GB/月
- 2500次下载请求/天 :约75,000次/月
- 2500次上传请求/天
- 无限上传流量 :上传不计费
独特优势
Backblaze加入了Cloudflare带宽联盟,当通过Cloudflare访问B2数据时,流量完全免费!这意味着:
- 存储在B2(成本低)
- 通过Cloudflare分发(流量免费)
- 享受全球CDN加速
配置方案
将B2作为源站,Cloudflare作为CDN,既省钱又快速。这是很多个人站长的首选方案。citation
3. 国内云厂商免费额度汇总
对于国内用户,国内云厂商的对象存储也值得考虑(需备案域名):
| 服务商 | 存储空间 | 流量 | 特点 |
|---|---|---|---|
| 腾讯云COS | 50GB/月 | 10GB/月 | 6个月免费,国内访问快 |
| 网易云NOS | 50GB/月 | 20GB/月 | 最慷慨的国内选项 |
| 阿里云OSS | 40GB | 10GB/月 | 6个月免费,新用户 |
| 七牛云 | 10GB | 10GB/月 | 永久免费 |
| 又拍云 | 10GB | 15GB/月 | 需申请又拍云联盟 |
注意:国内服务大多需要绑定已备案域名才能使用。citation
实战指南:从零开始配置
实战一:Supabase完整配置
步骤1:创建项目
- 访问 https://supabase.com 并注册账号
- 点击"New Project"创建项目
- 填写项目信息:
- Name:项目名称
- Database Password:设置强密码
- Region:选择Singapore(距离中国最近)
- 等待2-3分钟,数据库初始化完成
步骤2:创建数据表
在SQL Editor中执行:
-- 创建用户表
create table profiles (
id uuid references auth.users primary key,
username text unique,
avatar_url text,
created_at timestamp with time zone default now()
);
-- 创建文章表
create table posts (
id uuid default uuid_generate_v4() primary key,
user_id uuid references profiles(id),
title text not null,
content text,
created_at timestamp with time zone default now()
);
-- 启用行级安全
alter table profiles enable row level security;
alter table posts enable row level security;
-- 创建策略:用户可以读取所有资料
create policy "Public profiles are viewable by everyone"
on profiles for select
using (true);
-- 创建策略:用户可以更新自己的资料
create policy "Users can update own profile"
on profiles for update
using (auth.uid() = id);
步骤3:配置认证
- 在Dashboard中点击"Authentication" → "Providers"
- 启用Email provider(默认已启用)
- 可选:配置OAuth providers(GitHub、Google等)
- 在"Email Templates"中自定义邮件模板
步骤4:在应用中集成
安装依赖:
npm install @supabase/supabase-js
创建Supabase客户端:
import { createClient } from '@supabase/supabase-js'
const supabaseUrl = 'https://your-project.supabase.co'
const supabaseKey = 'your-anon-key'
const supabase = createClient(supabaseUrl, supabaseKey)
// 注册用户
async function signUp(email, password) {
const { data, error } = await supabase.auth.signUp({
email,
password,
})
return { data, error }
}
// 查询数据
async function getPosts() {
const { data, error } = await supabase
.from('posts')
.select('*, profiles(*)')
.order('created_at', { ascending: false })
return { data, error }
}
// 实时订阅
const subscription = supabase
.channel('posts')
.on('postgres_changes',
{ event: '*', schema: 'public', table: 'posts' },
(payload) => {
console.log('数据变更:', payload)
}
)
.subscribe()
实战二:Cloudflare R2搭建图床
步骤1:创建R2存储桶
- 登录Cloudflare Dashboard
- 点击"R2" → "Create bucket"
- 输入桶名称(建议使用UUID,防止被刷流量)
- 选择位置提示(可选亚太、欧洲、美洲)
- 点击"Create bucket"
步骤2:配置公开访问
- 在桶设置中,点击"Settings"
- 找到"Public access" → 点击"Allow Access"
- 会生成一个公开访问域名,如:
pub-xxx.r2.dev
步骤3:绑定自定义域名
- 在R2桶设置中,点击"Custom Domains"
- 添加你的域名(如:
img.yourdomain.com) - Cloudflare会自动配置DNS记录
- 启用"小黄云"获得CDN加速
步骤4:配置缓存规则
在Cloudflare Dashboard中:
- 进入你的域名 → "Rules" → "Page Rules"
- 创建新规则:
- URL:
img.yourdomain.com/* - 设置:Cache Level = Cache Everything
- 设置:Edge Cache TTL = 1 month
- URL:
- 保存规则
步骤5:使用PicGo上传
安装PicGo和S3插件:
# 下载PicGo:https://github.com/Molunerfinn/PicGo/releases
# 安装picgo-plugin-s3插件
配置S3插件:
{
"accessKeyID": "your-access-key",
"secretAccessKey": "your-secret-key",
"bucketName": "your-bucket-name",
"uploadPath": "images/{year}/{month}/",
"endpoint": "https://your-account-id.r2.cloudflarestorage.com",
"urlPrefix": "https://img.yourdomain.com"
}
获取API密钥 :
- R2 Overview → "Manage R2 API Tokens"
- 创建新token → 选择"Admin Read & Write"
- 记录Access Key ID和Secret Access Key
现在就可以通过PicGo一键上传图片到R2了!
实战三:Backblaze B2配合Cloudflare
步骤1:注册Backblaze账号
- 访问 https://www.backblaze.com/b2/sign-up.html
- 填写邮箱、密码注册
- 验证邮箱
步骤2:创建存储桶
- 登录平台 → "创建一个桶"
- 桶名称:使用UUID(防刷流量)
- 文件访问:选择"公众"
- 创建完成后,记住Endpoint域名(如:
f004.backblazeb2.com)
步骤3:配置Cloudflare DNS
- 在Cloudflare添加CNAME记录
- 名称:
b2(或其他前缀) - 目标:
f004.backblazeb2.com - 启用代理(橙色小云)
步骤4:修改SSL设置
在Cloudflare Dashboard:
- SSL/TLS → Overview
- 将加密模式改为"完全(严格)"
- 否则会出现522错误
步骤5:设置URL重写
在Cloudflare Rules → Transform Rules → Rewrite URL:
- 传入请求匹配:
b2.yourdomain.com - 路径重写到:
concat("/file/your-bucket-name", http.request.uri.path)
这样访问 https://b2.yourdomain.com/image.jpg 时,实际会请求 f004.backblazeb2.com/file/your-bucket-name/image.jpg,但URL中不会暴露桶名!
步骤6:配置缓存
在B2桶设置中,添加桶信息:
{"cache-control":"max-age=720000"}
在Cloudflare Page Rules中创建规则:
- URL:
b2.yourdomain.com/* - Cache Level:Cache Everything
- Edge Cache TTL:1 month
现在你就拥有了一个免费、快速、无限流量的图床服务!
数据库选择决策树
如何选择合适的数据库?
1. 如果你需要完整的后端解决方案(数据库+认证+存储)
→ 选择 Supabase
理由:一站式服务,功能最全,开箱即用
2. 如果你使用Next.js等Serverless框架
→ 选择 Neon 或 PlanetScale
理由:专为Serverless优化,冷启动快,自动扩缩容
3. 如果你需要灵活的文档存储
→ 选择 MongoDB Atlas
理由:Schema灵活,适合快速迭代的项目
4. 如果你需要全球低延迟访问
→ 选择 Turso 或 Cloudflare D1
理由:边缘分布,数据靠近用户,延迟极低
5. 如果你需要缓存和会话存储
→ 选择 Upstash Redis
理由:Serverless Redis,按需付费,REST API支持
6. 如果你需要简单的键值存储
→ 选择 Vercel KV 或 Cloudflare KV
理由:与平台深度集成,零配置
数据库免费额度对比
| 数据库 | 存储空间 | 特色功能 | 最佳场景 | 信用卡 |
|---|---|---|---|---|
| Supabase | 500MB | 认证+存储+实时 | 全栈应用 | 否 |
| Neon | 512MB | 分支+时间旅行 | Serverless | 否 |
| PlanetScale | 5GB | 无锁变更+分支 | 高并发 | 是 |
| MongoDB Atlas | 512MB | 文档存储 | 灵活Schema | 否 |
| Turso | 9GB | 边缘分布 | 低延迟 | 否 |
| Upstash Redis | 256MB | REST API | 缓存/会话 | 否 |
对象存储选择建议
场景匹配指南
个人博客图床
→ Cloudflare R2 或 Backblaze B2 + Cloudflare
- R2:零流量费,配置简单,10GB空间
- B2+CF:存储成本低,通过CF流量免费,适合大量图片
国内访问为主的网站
→ 七牛云 或 腾讯云COS (需备案)
- 七牛云:10GB永久免费,国内访问快
- 腾讯云:50GB空间,新用户6个月免费
全球访问的应用
→ Cloudflare R2
- 全球CDN加速
- 零流量费
- 自动HTTPS
文件下载站
→ Backblaze B2 + Cloudflare
- B2存储成本低
- 配合CF流量免费
- 适合大文件分发
视频网站
→ Cloudflare Stream (有限免费)或 Bunny.net
- 专门为视频优化
- 自动转码和自适应流
- 全球CDN分发
对象存储服务对比
| 服务 | 存储 | 流量 | 特点 | 适用场景 |
|---|---|---|---|---|
| Cloudflare R2 | 10GB | 无限制 | 零出口费用 | 通用图床 |
| Backblaze B2 | 10GB | 1GB/天 | 配合CF免费 | 大量存储 |
| 七牛云 | 10GB | 10GB/月 | 国内快 | 国内网站 |
| 腾讯云COS | 50GB | 10GB/月 | 新用户6个月 | 临时项目 |
| 又拍云 | 10GB | 15GB/月 | 需申请联盟 | 国内加速 |
组合使用方案推荐
最佳实践往往是将多个服务组合使用,发挥各自优势:
组合1:全能Cloudflare生态
技术栈 :
- 前端:Cloudflare Pages
- API:Cloudflare Workers
- 数据库:Cloudflare D1
- 对象存储:Cloudflare R2
- 缓存:Cloudflare KV
优势 :
- 所有服务在同一平台,管理方便
- 服务之间延迟极低(在同一数据中心)
- 全球边缘分布,性能极佳
- 免费额度组合起来非常慷慨
适用场景 :全球化的边缘应用、低延迟需求
组合2:Vercel + Supabase全栈方案
技术栈 :
- 前端:Vercel
- 数据库:Supabase (PostgreSQL)
- 认证:Supabase Auth
- 文件存储:Supabase Storage
- 实时功能:Supabase Realtime
优势 :
- Next.js在Vercel上性能最佳
- Supabase提供完整后端功能
- 开发体验极佳,文档完善
- 两个服务都有活跃的社区
适用场景 :快速开发MVP、全栈SaaS应用
组合3:多云组合方案
技术栈 :
- 前端:Vercel
- 数据库:Neon (PostgreSQL)
- 缓存:Upstash Redis
- 对象存储:Cloudflare R2
- 队列:Upstash QStash
优势 :
- 选择每个领域的最佳服务
- 避免单一平台依赖
- 灵活性最高
适用场景 :复杂应用、需要最佳性能
组合4:国内优化方案
技术栈 :
- 前端:Vercel (海外) + Cloudflare (国内加速)
- 数据库:MongoDB Atlas (新加坡节点)
- 对象存储:七牛云 (国内) + R2 (海外)
- CDN:Cloudflare
优势 :
- 国内外访问都有优化
- 数据存储在境外(无需备案)
- CDN加速国内访问
适用场景 :面向国内外用户的应用
性能优化最佳实践
数据库优化
1. 索引优化
-- 为经常查询的字段创建索引
CREATE INDEX idx_posts_user_id ON posts(user_id);
CREATE INDEX idx_posts_created_at ON posts(created_at DESC);
-- 复合索引
CREATE INDEX idx_posts_user_date ON posts(user_id, created_at DESC);
2. 连接池配置
// 使用连接池,避免频繁创建连接
import { Pool } from 'pg'
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
max: 20, // 最大连接数
idleTimeoutMillis: 30000,
connectionTimeoutMillis: 2000,
})
3. 查询优化
// ❌ 避免:N+1查询问题
const posts = await getPosts()
for (const post of posts) {
const user = await getUser(post.user_id) // 多次查询
}
// ✅ 推荐:使用JOIN一次查询
const posts = await supabase
.from('posts')
.select('*, profiles(*)')
对象存储优化
1. 图片优化
// 使用Supabase自动图片优化
const imageUrl = supabase.storage
.from('avatars')
.getPublicUrl('avatar.jpg', {
transform: {
width: 200,
height: 200,
resize: 'cover',
format: 'webp', // 自动转换为WebP
quality: 80
}
})
2. CDN缓存配置
在Cloudflare中设置缓存规则:
Cache-Control: public, max-age=31536000, immutable
3. 智能压缩
// 上传前压缩图片
import imageCompression from 'browser-image-compression';
const options = {
maxSizeMB: 1,
maxWidthOrHeight: 1920,
useWebWorker: true
}
const compressedFile = await imageCompression(file, options)
常见问题解答
Q:免费数据库的数据会丢失吗?
A:不会。我们推荐的服务都是正规商业服务,数据有多重备份保障:
- Supabase、Neon等使用AWS底层存储,数据冗余存储
- 免费套餐和付费套餐的数据安全级别相同
- 建议定期导出重要数据作为额外备份
Q:免费额度用完了怎么办?
A:不同服务处理方式不同:
- Supabase/Neon :数据库暂停,不会删除数据,升级套餐即可恢复
- Cloudflare R2 :超出免费额度开始按量计费(但费用很低)
- MongoDB Atlas :可以清理旧数据,或升级到付费套餐
- 建议:监控使用量,接近限制时提前处理
Q:这些数据库可以用于生产环境吗?
A:可以,但要看流量规模:
- 小型项目 (日活<1000):完全够用,很多成功案例
- 中型项目 (日活1000-10000):需要监控指标,必要时升级
- 大型项目 :建议直接使用付费套餐,获得更好的性能和支持
Q:Supabase和Firebase哪个更好?
A:各有优势:
- Supabase 优势:开源、基于PostgreSQL、更灵活、可自部署
- Firebase 优势:Google背书、与Google服务集成、移动端SDK更成熟
- 个人推荐Supabase,因为不会被平台锁定
Q:对象存储的图片会被压缩吗?
A:取决于具体服务:
- Cloudflare R2 :不会自动压缩,存储原图
- Supabase Storage :支持on-the-fly转换(通过URL参数)
- 七牛云 :有图片处理功能,可实时转换格式和尺寸
- 建议:上传前在客户端压缩,节省存储和流量
Q:国内访问Cloudflare服务慢怎么办?
A:优化方案:
- 使用Cloudflare的"Argo Smart Routing"(付费功能)
- 配置Page Rules优化缓存策略
- 对于数据库,选择新加坡或香港节点
- 静态资源使用国内CDN,动态数据使用Cloudflare
本章小结
通过本章学习,你应该已经:
- ✅ 了解了现代数据库服务的分类和特点
- ✅ 掌握了Supabase、Neon、PlanetScale等主流免费数据库
- ✅ 理解了对象存储的概念和使用场景
- ✅ 学会了配置Cloudflare R2和Backblaze B2
- ✅ 知道如何根据项目需求选择合适的数据存储方案
- ✅ 掌握了数据库和对象存储的性能优化技巧
现在,你的"穷鬼套餐"技术栈已经非常完整了:
- 域名 :EU.org免费域名
- DNS :Cloudflare免费DNS
- 托管 :Vercel/Cloudflare Pages免费托管
- 数据库 :Supabase/Neon免费PostgreSQL
- 存储 :Cloudflare R2免费对象存储
这套组合可以支撑起一个功能完整的Web应用,而成本几乎为零!
在下一章,我们将探讨更多实用的免费服务——从邮件发送到监控告警,从分析统计到自动化工具,让你的应用功能更加完善。
如果这一章对你有帮助
恭喜你!完成这一章后,你已经掌握了搭建完整数据存储方案的能力。从关系型数据库到文档数据库,从边缘存储到对象存储,这些免费资源足以支撑你的创业想法和个人项目。
如果这一章帮助你成功配置了数据库或对象存储,或者让你对数据存储有了更深的理解,请不要吝啬你的点赞、分享和关注 !
欢迎在推特上关注我:@sujingshen
我会持续分享:
- 更多免费云服务的深度评测
- 实战项目的技术选型经验
- 性能优化的实用技巧
- "穷鬼套餐"系列的最新进展
也欢迎在评论区分享:
- 你使用的是哪个数据库服务?
- 遇到了什么有趣的问题?
- 有没有发现其他好用的免费存储服务?
- 你的项目用了什么技术栈?
让我们一起探索,用免费资源创造无限可能!🚀
下一章见,我们将继续扩展你的免费工具箱!