1.添加记录
在DNS记录中添加一条IPv6记录指向100::
。(WHY?)
type | name | content |
---|---|---|
AAAA | cdn | 100:: |
2.创建worker
创建一个worker代码如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32addEventListener("fetch", event => {
event.respondWith(handleRequest(event))
})
const BUCKET_NAME = "akame-moe"
const BUCKET_URL = `https://storage.googleapis.com/${BUCKET_NAME}`
async function serveAsset(event) {
const url = new URL(event.request.url)
const cache = caches.default
let response = await cache.match(event.request)
if (!response) {
response = await fetch(`${BUCKET_URL}${url.pathname}`)
const headers = { "cache-control": "public, max-age=14400" }
response = new Response(response.body, { ...response, headers })
event.waitUntil(cache.put(event.request, response.clone()))
}
return response
}
async function handleRequest(event) {
if (event.request.method === "GET") {
let response = await serveAsset(event)
if (response.status > 399) {
response = new Response(response.statusText, { status: response.status })
}
return response
} else {
return new Response("Method not allowed", { status: 405 })
}
}
3.配置路由
将本worker的路由配置为cdn.YOURDOMAIN.com/*
,点击deploy。
4.测试
假如你有一个文件链接为:https://storage.googleapis.com/akame-moe/public/random/food.png
,那么现在你可以访问https://cdn.YOURDOMAIN.com/public/random/food.png
试试,应该能正常访问,如果不能,检查一下自己的步骤。其他类似 Google Cloud Storage 的服务应该也可以用此方法配置CDN。
当然,这种依赖workers的CDN不能无限制的使用,workers的限制有哪些可以翻阅官方文档。
5.声明
本用法来自官方教程,并无任何滥用cloudflare免费资源行为。
6.Conclusion
Thank the great enterprise Cloudflare for providing so many free fantastic functionality to developers.