云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

免备案CDN_云主机市场价格_返现

小七 141 0

集成重定向云工

以下是Xavier Lacot的客座帖子,他是重定向.ioJoliCode的创始人。他主要从事网络和移动项目的顾问、培训师和技术专家。是什么重定向.io重定向.io是一个Web流量重定向管理器。它为网站管理员、SEO代理和开发人员提供了一系列工具,这些工具有助于分析HTTP错误、设置HTTP重定向、定制HTTP响应和有效地监控流量。传统的重定向.iosetup是代理,是一个软件组件,它解析每个请求,以检查是否需要重定向或其他响应覆盖。这个"代理"可以有多种类型—我们提供多种语言的库—但是可以通过利用Cloudflare Workers为Cloudflare客户机简化此设置。云彩工人来了今年早些时候,Cloudflare发布了其Workers产品,这是一种在Cloudflare位置边缘运行代码的智能方式。这个计算特性特别有趣,因为它允许在不需要对自己的平台、代码或基础设施进行任何更改的情况下执行多个流量操作:只需启用Workers,编写一些代码,然后让Cloudflare来处理这个问题✨实际上,工人充当应用程序中间件。它们将传入的HTTP请求代理到堆栈,并可以修改请求和响应。Cloudflare提供了一些示例和代码思想,可以帮助您构建自己的工人。下面是一个非常基本的Cloudflare工作人员:addEventListener('fetch',事件=>{事件响应(手柄请求(事件请求))})异步函数handleRequest(请求){控制台.log("收到请求",请求)const response=等待获取(请求)控制台.log("得到响应",响应)返回响应}幸运的是,重定向.io已经有一个公开托管代理的公共HTTP端点(例如,对于共享托管,在那里不可能安装自己的二进制文件)。提供重定向.io对于所有Cloudflare Workers,用户只需在每个传入请求时查询我们的托管代理即可:在代码方面,我们使用的模式非常类似于Workers示例:我们监听传入的请求:addEventListener('fetch',(event)=>{事件响应(重定向日志(事件请求));});异步函数redirectAndLog(请求){const response=等待redirectOrPass(请求);日志(请求、响应);返回响应;}当然,我们必须实现redirectOrPass()和log()函数,这将发挥所有的魔力:redirectOrPass()查询重定向.io的API,以了解是否必须为当前请求运行某些操作,并在必要时允许请求通过。此调用被阻塞;它将停止请求,直到收到来自的响应重定向.io的后端。log()将日志数据发送到后端进行分析和统计。这个调用是非阻塞的,因为它可以在响应发送给用户之后执行。因此,这两个函数都定义为异步非阻塞函数:异步函数重定向器类(请求){...}异步函数日志(请求、响应){...}让我们继续使用redirectOrPass()实现!使用fetch API,我们可以调用重定向.io的代理API:const urlObject=新URL(请求.url);常量上下文={"主机":URL对象.host,'请求'u uri':URL对象.路径名,'用户代理':请求.headers.get('user-agent'),"方案":urlObject.protocol.includes.包含('https')?'https':'http'};让响应=null;试试看{response=等待获取('https://proxy.redirection.io/' + 选项.token+'/得到'{method:'发布',正文:JSON.stringify(上下文),});}捕获(错误){//如果找不到操作,播放常规请求return wait fetch(请求);}如果我们的API以404状态响应(这意味着没有为该类型的请求定义重定向或操作规则),我们只需从您的网站后端返回标准响应-这是通过return await fetch(request)来实现的如果必须运行重定向,重定向.io的API将发送一个Status200响应,其中包含有关如何转换响应的所有信息。例如,有效载荷可能看起来像:{"状态代码":302,"location":"/blog-yo"}... 我们可以简单地用它来改变反应:const data=等待响应.text();试试看{响应=JSON.parse(数据);}捕获(错误){//如果出现错误,按常规要求播放return wait fetch(请求);}//发送消失的响应如果(响应状态代码===410){返回新的响应('',{status:410});}//发送重定向响应返回新响应(''{状态:编号(响应状态代码),标题:{"位置":响应.位置}});log()函数的实现非常类似:异步函数日志(请求、响应){const urlObject=新URL(请求.url);常量上下文={"状态代码":响应.状态,"主机":URL对象.host,'请求'u uri':URL对象.路径名,'用户代理':请求.headers.get('user-agent'),"方案":urlObject.protocol.includes.包含('https')?'https':'http',};试试看{return wait fetch('https://proxy.redirection.io/' + 选项.token+'/log'{method:'发布',正文:JSON.stringify(上下文),});}捕获(错误){//什么都不做,如果丢失了一些日志也不重要}}影响和性能问题Cloudflare的工人跑得很快。我们所说的"非常快",是指在微秒内,Cloudflare能够执行文档中所述的"每秒数千个工作脚本"。后面的那堆重定向.io它也非常高效,能够管理类似级别的流量,而不会有任何延迟或减速。但是,偶尔也会出现网络减速,这可能会影响web应用程序的性能。有几种方法可以减轻这种可能的影响。首先,Cloudflare Workers支持使用Fetch API缓存子请求。这意味着,如果应用程序的url经常被命中(例如主页),那么您可能希望从重定向.io的API。使用这种方法,对绝大多数传入请求的影响将接近于零。另一种方法是,使用重定向.iowill add:我们可以简单地为服务人员发出的fetch()调用定义一个超时!只需将fetch()调用嵌套在承诺。比赛():response=等待获取('https://proxy.redirection.io/' + 选项.token+'/得到'{method:'发布',正文:JSON.stringify(上下文),});变成:响应=等待承诺。比赛([获取('https://proxy.redirection.io/' + 选项.token+'/得到'{method:'发布',正文:JSON.stringify(上下文),}),新承诺(拒绝)=>setTimeout(()=>拒绝(new Error('Timeout')),选项.超时)),])在谈到性能时,最好提供一些数字进行有效比较:Cloudflare已启用已启用工作线程请求定时✅❌约32毫秒✅✅ (空工人)约36毫秒✅✅ (重定向.io无缓存的工作线程)约44毫秒这意味着你可以从重定向.io在您的网站上通过Cloudflare workers以~8ms的价格发布。并且,一旦来自重定向.io的api是缓存的,与支持Cloudflare的标准网站相比,我们没有发现任何区别。我们坚信Cloudflare Workers是整合重定向.io进入你的网站。尝试重定向.io今天和Cloudflare的工作人员一起汇报!