tencent cloud

文档反馈

最后更新时间:2023-09-14 16:42:44
    基于 Web APIs 标准 Fetch API 进行设计。边缘函数运行时可使用 fetch 发起异步请求,获取远程资源。

    描述

    function fetch(request: string | Request, requestInit?: RequestInit): Promise<Response>

    参数

    参数名称
    类型
    必填
    说明
    request
    string | Request
    指定将要获取的请求资源。
    requestInit
    请求对象的初始化配置项。详情请参见 RequestInit

    高级功能

    使用 fetch 时,可以通过传入特定参数实现更精细的控制和定制化逻辑。主要包含访问 EdgeOne 节点缓存或回源,图片处理,重定向。

    访问 EdgeOne 节点缓存或回源

    当客户端访问某个已接入 EdgeOne 站点的加速域名 时(如:www.example.com ),同时该请求触发了边缘函数执行,此时在该边缘函数中实现 fetch(www.example.com) 请求,该请求将访问 EdgeOne 节点缓存,若不存在缓存,则进行回源。
    说明:fetch 访问 EdgeOne 节点缓存与回源,需满足以下条件:
    1. 客户端访问 EdgeOne 接入站点的加速域名,同时该请求触发了边缘函数执行。
    2. fetch(request) 指定的 request.url 中的 HOST 和客户端请求 URL 中的 HOST 相同。
    3. fetch(request) 指定的 request.headers.host 和客户端请求头 HOST 值相同。
    fetch(event.request) 获取 EdgeOne 缓存与回源。
    addEventListener('fetch', (event) => {
    // fetch(event.request) 获取 EdgeOne CDN 缓存与回源。
    const response = fetch(event.request);
    event.respondWith(response);
    });
    fetch(url) 获取 EdgeOne 缓存与回源。
    addEventListener('fetch', (event) => {
    event.respondWith(handleEvent(event));
    });
    
    async function handleEvent(event) {
    const { request } = event;
    const urlInfo = new URL(request.url);
    // 回源 URL 改写
    const url = `${urlInfo.origin}/h5/${urlInfo.pathname}`;
    // fetch(url) 获取 EdgeOne CDN 缓存与回源。
    const response = await fetch(url);
    return response;
    }

    图片处理

    fetch 支持传入参数 requestInit.eo.image 对图片进行缩放或格式转换,详情参见图片处理的参数配置项 ImageProperties
    说明:
    使用 fetch(request, requestInit) 实现图片处理时,需要同时满足 fetch 获取 EdgeOne 节点缓存与回源的条件。

    重定向

    fetch 支持 3xx 重定向状态码。可使用第二个参数 requestInit.redirect 属性进行设置,更多重定向配置,请查看 RequestInit
    重定向规则遵从 Web APIs 标准 fetch API,针对不同状态码有不同的跟随规则:
    状态码
    重定向规则
    301、302
    POST 方法被转为 GET 方法。
    303
    HEAD / GET 外的所有方法都被转为 GET 方法。
    307、308
    保留原始方法。
    注意
    重定向的地址来源于响应头 Location,若无该响应头,则不会重定向。
    响应头 Location 值可以是绝对 URL 或者相对 URL,详情参见 RFC-3986: URI Reference

    运行时限制

    边缘函数中使用 fetch 发起请求,存在以下限制:
    次数限制:边缘函数单次运行中可发起的 fetch 总次数为 64,超过该限制的 fetch 请求会请求失败,并抛出异常。
    并发限制:边缘函数单次运行中允许发起 fetch 最大并发数为 8,超过该限制的 fetch 请求会被延迟发起,直到某个正在运行着的 fetch 被 resolve。
    注意
    每一次重定向都会计入请求次数,且其优先级高于新发起的 fetch 请求。

    相关参考

    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持