409 字
2 分钟
利用Cloudflare Workers托管你的静态资源
利用Cloudflare Workers
和 Workers KV
可以快速、安全且易于管理地托管静态资源。不同于将它们放在Github仓库然后通过raw link或是CDN,这种方式不会有一长串乱七八糟的链接,且可以使用你自己的域名。例如现在可以从https://s.a33.su/artiga033_0C79B2C5863375CC.asc获取我的PGP公钥。
Workers KV提供1GB存储(白嫖之王也可以把数据硬编码到worker代码里?),对于个人开发者足够了。
创建Workers KV
你需要创建一个Workers KV
,本文以名为命名空间为static
为例,然后为它添加Key-Value,建议使用文件名作为Key。
将 KV 绑定到 Worker
创建一个新的 Worker(以static
为例),转到设置
选项卡,添加KV绑定,这会要求你输入一个全局变量名,本文以STATIC_FILE
为例。
让 Worker 返回内容
在上一步定义的全局变量名可以直接在worker代码中调用,它有一个get方法来获得对应的Value:const value= await STATIC_FILE.get(name);
。
先写个function来生成Response,注意为它添加CORS标头方便跨站引用:
async function getStaticFile(name){ let resp=new Response("Value not found", {status: 404}) const value = await STATIC_FILE.get(name) if(value != null) { resp=new Response(value) } //添加CORS标头 resp.headers.set("Access-Control-Allow-Origin","*") resp.headers.set("Access-Control-Max-Age","86400") return resp}
现在 只需要获取URL请求中的Path 获取内容并返回:
addEventListener('fetch', event => { const urlObj = new URL(event.request.url) //pathname第一个字符是`/`,不需要包含它 const path = urlObj.pathname.substr(1) event.respondWith(getStaticFile(path))})
一个最简单的静态文件托管就完成了,现在你只需要添加对应的Key-Value,就可以在任意场景从Worker引用这些内容!
利用Cloudflare Workers托管你的静态资源
https://blog.a33.su/posts/host-static-file-on-cfworkers/