SuperAPI AI 工具集

netlify-blobs

部署与运维

查看项目

更新于 10-16 06:51

技能介绍

用途:Netlify Blobs 用于在 Netlify 上存储和读取非结构化对象、文件与类缓存状态,通过 @netlify/blobs 模块在 Functions、Edge Functions 和构建插件中使用。它不是数据库,动态、按用户、事务性或关系型数据应使用 Netlify DB。

主要能力:用 getStore(name) 打开站点级存储(跨所有部署共享),用 getDeployStore(name) 打开部署级存储(仅限单次部署,回滚时同步、部署删除时清理)。支持 set/setJSON 写入(值可为 ArrayBuffer、Blob、string 或可 JSON 序列化值),get 读取(type 可选 text、json、arrayBuffer、blob、stream,缺失返回 null),getWithMetadata 与 getMetadata 获取元数据与 etag,list 列出键(支持 prefix、directories、paginate),delete 与 deleteAll 删除,listStores 列出存储。写入支持 onlyIfNew 与 onlyIfMatch 条件,返回 { modified, etag }。

使用方式:安装 npm install @netlify/blobs。在 Functions、Edge Functions 和构建插件中 siteID、deployID、token 自动注入。示例:const uploads = getStore("file-uploads"); await uploads.set(key, file, { metadata: { country: "Spain" } });。也可通过文件方式上传:将文件放在 .netlify/blobs/deploy 下,配套 $<filename>.json 提供元数据。CLI 提供 netlify blobs:list/get/set/delete 用于检查。

适用场景:用户文件上传持久化、对象与文件存储、类缓存状态等频繁读取、少量写入的场景。

限制:无内置访问控制,需由服务函数作为入口,默认应保持私有;无服务端 TTL,需自行在元数据存过期时间并在读取时判断删除;默认最终一致性,更新与删除在 60 秒内传播到各边缘位置,可按存储或单次读取选择强一致性;站点级存储默认区域为 us-east-2 且不跟随函数区域,区域需每次调用传入,改区域不会迁移数据;存储名不能含 / 或 :,最长 64 字节;键非空、不能以 / 开头、最长 600 字节;对象最大 5 GB,元数据最大 2 KB;Go 编写的 Functions 无法访问;需要 Fetch API(Node.js 18+);本地开发使用沙箱存储,不支持文件上传,也无法读取生产数据;文件上传需持续部署或 CLI 部署。并发上最后写入生效,不应在单个键上实现计数器、余额或读改写逻辑。若操作失败,应暴露错误并查看函数日志,不要自行构造 REST 端点重试。从 @netlify/blobs 6.5.0 或更早版本升级时,站点级存储因命名空间变化可能不可访问,可用 netlify recipes blobs-migrate YOUR_STORE_NAME 迁移。