百度云加速新出的边缘计算功能确实不错,可操作性非常强。今天我们来学习下如何利用这个功能给网站做缓存。
首先我们先创建函数,在我们的控制台左边,我的函数,添加
函数名随便写
输入代码保存,代码如下:
async function handleRequest(event) { const { request } = event // POST请求不缓存 if (request.method.toUpperCase() === 'POST') return await fetch(request) // 创建cacheKey let cacheUrl = new URL(request.url) let cacheKey = new Request(cacheUrl, request) let cache = caches.default // 查找是否该cacheKey已缓存 let response = await cache.match(cacheKey) // 如果没缓存则加入到缓存 if (!response) { response = await fetch(request) response = new Response(response.body, response) // 添加过期时间 response.headers.append('Cache-Control', 'max-age=10') // 加入到缓存 event.waitUntil(cache.put(cacheKey, response.clone())) } return response } addEventListener('fetch', event => { return event.respondWith(handleRequest(event)) }) 再返回控制台,我的网站,进入域名管理,左边的边缘计算 添加触发规则,选择刚才添加的函数名,确认即可 匹配内容写你要缓存的URL地址加通配符,即可完成。
URL 匹配规则说明:
规则绑定形如: https://*.example.com/images/*
一般规则:
1、规则里必须包含域名,如example.com/1.jpg。
2、规则里不能包含参数,如example.com/?anything是不合法的。
3、规则中如果不包含协议,则会匹配http和https;如果指定协议,则只匹配指定的协议。如www.example.com/会同时匹配https://www.example.com/和http://www.example.com/,https://www.example.com/只匹配https://www.example.com/而不会匹配http://www.example.com/。
关于通配符「*」:
1、仅支持通配符,代表0个或多个任意字符。
*不能用于中缀或参数的匹配,如example.com/*.jpg或example.com/?foo=*都是不合法的。
2、多条规则都匹配时,优先匹配更精确的规则,如www.example.com/*的匹配优先级高于*.example.com/*。
3、*匹配前缀时,*example.com/会同时匹配https://example.com/和https://www.example.com/;*.example.com/只会匹配https://www.example.com/而不匹配https://example.com/。
4、*匹配后缀时,https://example.com/path*,会同时匹配https://example.com/path2和https://example.com/path/readme.txt;https://example.com/path/*,则只匹配https://example.com/path/readme.txt而不匹配https://example.com/path2。