众所周知CF R2提供了10GB了免费空间和每月一千万次的免费Class B操作。也就是说如果开一个存储桶,并且设置为公开的话,每个月被刷一千万次之后就开始收费,而且上不封顶,没有限制的方法。
为了这个存储桶能够被外界访问到但是同时不会一夜破产,可以使用免费套餐的CF Worker作为限制,它在一天100000次请求之后就会罢工。
如果创建一个CF Worker把私有桶映射为公开桶,那么就可以把每天的访问次数限制在10w次,然后每月限制为300w次。
export default {
async fetch(request, env) {
const path = decodeURIComponent(new URL(request.url).pathname.slice(1));
if (!path) {
return new Response("Not Found", { status: 404 });
}
try {
const file = await env.OPCT.get(path);
if (!file) {
return new Response("Not Found", { status: 404 });
}
const headers = new Headers();
headers.set('Content-Type', file.httpMetadata?.contentType || 'application/octet-stream');
return new Response(file.body, { headers });
} catch (error) {
return new Response("Server Error", { status: 500 });
}
}
}
设置绑定那里把桶绑定到OPCT名称上就行
另外Worker的放置位置保持在默认就行,选择智能的话反而Worker全都运行在桶的地理位置
另外如果不是为了白嫖,那Backblaze B2的存储价格低一些。