对象存储 COS

Cloud Object Storage

用来存图片、视频、备份这些文件的大仓库,容量几乎无限,用多少付多少。

存储与数据出现时间 · 2013 年前后按存储容量、请求次数与流量分别计费,存储单价较低,出网流量按使用量单独结算。对象存储文件存储静态资源CDN 源站
看官方文档

01 它是干嘛的

COS 是对象存储服务,专门存放「文件」而不是「数据库记录」。它把无数块磁盘组织成一个容量近乎无限的仓库,文件通过桶(Bucket)归类、通过键(Key)寻址,配合 CDN 分发就是网站图片与视频的标准存放方式。它的价值在于:你不再需要自己维护磁盘阵列,也不必预估容量。

02 为什么会有它

硬盘总会满,而文件只会越来越多

每个做过网站的人都经历过硬盘告急:用户上传的头像、商品的图片、要归档的备份,一天天把磁盘填满。此时要么加硬盘、迁移数据,要么做归档删除,无论哪种都很折腾,而且加硬盘意味着一次性的采购支出。

更麻烦的是「共享」。一台服务器的磁盘只有本机能用,如果后来开了第二台机器,文件放在哪、怎么让两台都访问得到,又要重新设计。传统做法是搭一台共享文件服务器,但它的容量同样有限,还要人维护。

对象存储换了一种组织方式:不再假装自己是一棵目录树,而是把每个文件当成一个带唯一编号的「对象」,统一放进一个巨大的池子里。容量几乎没有上限,多个服务可以同时访问同一批文件,取用按实际用量付费。腾讯把这种服务做成了 COS,配合自家的 CDN,就成了网站托管图片与视频最省心的组合。

03 它怎么工作

对象存储不提供文件系统,而是「桶 + 对象」的扁平结构。大文件被切成多块并发上传,读取时通过 API 或 CDN 分发,热点文件还能被缓存到离用户最近的节点。

一个文件从上传到被全球读取① 申请上传凭证② 授权分片直传③ 合并为一个对象④ 记录元数据⑤ 热点自动上边缘客户端浏览器 / App存储服务 API签发临时上传凭证分片并发上传大文件切块,失败只重传一块桶(Bucket)无数个对象,没有目录树元数据索引大小 / 类型 / 哈希 / 标签边缘缓存热点文件就近返回对象存储不是硬盘:不能像文件夹那样随意改名,一个文件改名 = 复制一份再删除旧的。控制入口数据流向
重点看「分片并发上传」与「读取时先经 CDN 边缘缓存」这两处:前者解释了大文件为什么能稳定上传,后者解释了为什么把图片视频放 COS 再挂 CDN 是标准做法。

一个文件从上传到被全球访问:分片、元数据与边缘缓存

  1. 1
    ① 客户端申请上传凭证

    前端或后端向服务端请求临时上传凭证,服务端签发一段有时效的签名,避免把永久密钥暴露给浏览器。

  2. 2
    ② 大文件分片并发上传

    文件被切成若干块并行传输,某一块失败只需重传那一块,几百 GB 的文件也能稳定传完。

  3. 3
    ③ 服务端合并并写入元数据

    所有分片合并成一个对象,同时记录大小、类型、哈希与自定义标签,用于检索与管理。

  4. 4
    ④ 读取时走 CDN 边缘缓存

    访问图片或视频时先命中 CDN 边缘节点,热点内容不必回源到 COS,速度快、源站压力小。

  5. 5
    ⑤ 生命周期规则自动整理

    可以设置规则,把长期不用的文件转为低频存储、到期自动删除,或复制到另一个桶做异地备份。

04 谁在用它

网站与 App 的文件托管

用户上传的头像、附件、商品图统统存进 COS,再通过 CDN 分发,服务器硬盘从此不再告急。

音视频源站

作为视频点播的原始文件仓库,播放时经 CDN 分发,用户就近取片,观看更流畅。

数据备份与归档

数据库备份、日志归档长期存放,配合生命周期规则自动转低频,成本可控。

静态网站托管

把构建好的前端页面直接放进 COS,开启静态网站功能即可对外访问,省掉一台服务器。

跨服务共享文件

多台服务器、多个应用同时访问同一批文件,权限由存储桶统一控制,不必再搭共享文件服务器。

05 怎么用

会用任何一种云存储的 SDK 就能上手,核心步骤是「建桶、拿密钥、传文件、配 CDN」。

  1. 01在控制台进入对象存储,新建一个存储桶,选择地域并设置访问权限(私有读写最安全)。
  2. 02在访问管理中创建密钥,遵循最小权限原则,只授予业务需要的那个桶的读写权限。
  3. 03用官方 SDK、命令行工具或控制台上传文件,注意桶名与地域要和代码里保持一致。
  4. 04需要对外访问时绑定自定义域名,并接入 CDN 加速,图片与视频都能就近分发。
  5. 05配置生命周期规则:临时文件到期自动删除,冷数据转为低频存储,控制长期成本。
用官方 SDK 上传文件并生成临时下载链接python
from qcloud_cos import CosConfig, CosS3Client

# 1. 用密钥与地域初始化客户端
config = CosConfig(
    Region='ap-guangzhou',
    SecretId='你的SecretId',
    SecretKey='你的SecretKey',
)
client = CosS3Client(config)

# 2. 上传一个本地文件到指定存储桶
client.upload_file(
    Bucket='examplebucket-1250000000',
    Key='images/logo.png',
    LocalFilePath='./logo.png',
)

# 3. 生成一个有 300 秒有效期的下载链接(避免泄露永久密钥)
url = client.get_presigned_url(
    Method='GET', Bucket='examplebucket-1250000000',
    Key='images/logo.png', Expired=300,
)
print(url)

避坑提示

  • !不要把长期密钥写进前端代码,浏览器里的任何内容用户都能看到;公网访问请用临时签名链接或自定义域名加访问策略。
  • !对象存储没有「重命名」,改名等于复制一份再删掉旧的,大文件这么操作既慢又费流量,设计时尽量一次命名到位。
  • !桶名在全网范围内唯一且创建后不能修改,命名时最好带上业务与环境语义,例如 prod-assets-1300000000。
  • !注意区分「存储费」和「流量费」:存储费通常很便宜,把大量文件频繁对外下载产生的流量费才是账单里容易失控的那一项,接入 CDN 通常更省。

06 关键概念

对象存储
用「桶 + 键」的方式存文件的仓库,不支持目录树,也不能像硬盘那样随机改写某一段内容。
存储桶(Bucket)
对象的归类容器,类似一个顶级文件夹,桶名全局唯一且需要指定所属地域。
预签名 URL
服务端临时签发的、带权限与有效期的下载或上传地址,让客户端直连存储而不暴露密钥。
生命周期规则
按时间自动转移或删除对象的策略,用来控制长期存储成本。

07 容易混淆的对比

阿里云 OSS / AWS S3同类对象存储,接口与概念高度相似;S3 生态最广,国内业务则 OSS 与 COS 访问更快、合规更方便。
把文件直接放在服务器硬盘上零额外成本、实现最简单,但容量有限、难以多机共享,也没有 CDN 加速,规模一上来就必须迁走。
图软件图鉴

纯静态站点,无后端、无追踪。内容为中文原创撰写,用于帮助非技术读者理解主流软件产品。

关于本站

全部内容在构建时生成
产品名称与商标归各自公司所有

© 2026 软件图鉴Nuxt 4 · Vue 3 · Tailwind 4 · 纯静态