开始用CloudFlare后,留意到菜单中有一个明显的“Workers”菜单项,查看在线帮助文档,说是“在全球数以百计的 Cloudflare 数据中心中运行 JavaScript Service Workers。修改站点的 HTTP 请求和响应,发出并行请求或从边缘生成响应”,有一些简明的使用示例,还是比较清晰的。
这个Workers服务CloudFlare也提供了免费使用,只是在资源消耗方面做了一些限制,如果需要更大量的服务则可以付费购买,这也很合理。这种边缘计算也是未来的发展方向,ServerLess等概念也是很前沿、时髦的。
国内的百度云加速的菜单中也有“边缘计算”,但实际上不能使用,询问百度的客服说目前不提供。
在网上搜了一些CF的Workers用途,一些中文文章有介绍用于FQ、代理等的,或者一些滥用,也难怪百度暂时不开放给用户了。
而我们服务器的IP地址因为查询Whois过多,被RIPE欧洲区Whois服务器屏蔽了,本来准备换用其它服务器做中转,看到CF的Workers后觉得也可以尝试,把示范中的代码稍微做了一点修改:
addEventListener("fetch", (event) => { event.respondWith( handleRequest(event.request).catch( (err) => new Response(err.stack, { status: 500 }) ) ); }); /** * Many more examples available at: * https://developers.cloudflare.com/workers/examples * @param {Request} request * @returns {Promise} */ async function handleRequest(request) { const { pathname } = new URL(request.url); if (pathname.startsWith("/api")) { return new Response(JSON.stringify({ pathname }), { headers: { "Content-Type": "application/json" }, }); } if (pathname.startsWith("/status")) { const httpStatusCode = Number(pathname.split("/")[2]); return Number.isInteger(httpStatusCode) ? fetch("https://http.cat/" + httpStatusCode) : new Response("That's not a valid HTTP status code."); } //return fetch("https://welcome.developers.workers.dev"); return fetch("https://rdap-bootstrap.arin.net/bootstrap/ip" + pathname); }
还不需要给出自己的路由,直接访问CF提供的子域名并带上查询IP地址参数 https://get-whois-json.example.workers.dev/2.2.2.2 ,很快就可以使用了,关于Whois Json数据可以参考我前面写的《Whois RDAP 注册数据访问协议 Registration Data Access Protocol》。
对于需要外部IP来做少量查询访问的情况,这真是一个非常方便、免费的办法。免费版10万次访问/天的数量对于小型使用场合也是足够了。
其实这方面我还是门外汉,简单看了一下资料、试了一下就可以用了,更多、更酷的应用方式还多得很,以后慢慢了解学习。
评论