開始用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萬次訪問/天的數量對于小型使用場合也是足夠了。
其實這方面我還是門外漢,簡單看了一下資料、試了一下就可以用了,更多、更酷的應用方式還多得很,以後慢慢了解學習。
评论