本文为您介绍边缘程序ER注册事件和Fetch事件的方法。

注册事件

您必须在ER的全局代码区域调用addEventListener注册事件回调函数,注册的回调函数会在每次客户端发起请求时被调用,由于ER运行时的特性,多个回调函数可能会被同时调用,用于处理同时被拦截的多个客户端请求。

如果您对某个事件进行多次调用会形成调用链条。例如,使用以下代码注册的回调函数会被依次调用,当某个回调函数调用了respondWith函数时,调用链条会被终止,后面注册的回调函数不会再被调用。
addEventListener('fetch', a);
addEventListener('fetch', b);
说明 Fetch事件最多可以注册16个回调函数。

Fetch事件

Fetch事件即FetchEvent,用于拦截访问CDN的请求。对于Fetch事件,您必须调用event.respondWith去注册一个异步函数,该异步函数将返回一个Promise对象,即Promise必须被resolve成一个Response对象,用于返回给客户端发送的请求,否则视为ER程序错误。

FetchEvent的定义与Web API一致,详情请参见MDN官方文档FetchEvent。目前支持使用的参数如下:
  • waitUntil:用于保证异步任务在主请求回复后仍然完成。
  • respondWith:用于回复FetchEvent。
  • info:属于非标准,指向一个JS对象,对象中附加了CDN请求的特殊信息,例如地理信息、客户端IP、请求scheme和设备信息。