借助 Service Extensions,您可以使用扩展程序在媒体 CDN 处理路径中插入自定义代码。本页面简要介绍了 Media CDN 扩展程序。
Media CDN 提供了许多内置核心功能,可满足内容分发网络 (CDN) 的最常见应用场景。您可能还有这些功能之外的需求。例如,您可能需要对标头进行标准化以改进缓存、使用自定义网址签名算法,或将旧版行为从现有 CDN 移植到媒体 CDN。
您可以使用边缘扩展程序 (CdnEdgeExtension) 直接在媒体 CDN 处理路径中缓存前面的 Google 边缘网络上运行 WebAssembly (Wasm) 插件。
CdnEdgeExtension 资源直接附加到 EdgeCacheService 部署,并运行一个或多个有序扩展程序链 (extensionChains)。每个扩展程序链都定义了通用表达式语言 (CEL) 匹配条件 (matchCondition.celExpression),以便根据主机名、网址路径、查询参数或 HTTP 请求标头选择性地评估请求。
插件可以访问和操作 HTTP 请求标头和响应标头、影响缓存键生成、验证自定义授权令牌或网址签名,以及提供合成响应。如需了解详情,请参阅图 1。
媒体 CDN 边缘扩展程序的运作方式
当客户端请求到达由边缘扩展程序扩展的 EdgeCacheService 时,该扩展程序会按以下顺序运行:
匹配条件评估:Media CDN 会提取请求属性,并评估
CdnEdgeExtension中定义的有序extensionChains。CEL 表达式求值为true的第一个链会运行,所有后续链都会被跳过。插件请求标头处理 (
REQUEST_HEADERS):您配置的插件会按顺序运行。在单个扩展程序链中,您最多可以链接两个插件。插件可以检查转发的 HTTP 标头和 Envoy 属性、添加或重写请求标头,或向客户端返回直接合成响应。路由匹配和源站选择:Media CDN 会评估路由规则,然后根据请求(包括插件修改的所有请求标头或网址路径)选择目标源站。
缓存查找和源站提取:Media CDN 会评估缓存键(其中可以包含插件修改的请求标头或网址路径),检查边缘缓存存储空间,并在缓存命中时传送内容,或在缓存未命中时从所选源站提取内容。
插件响应标头处理 (
RESPONSE_HEADERS):从缓存或源站检索内容后,您配置的插件会按顺序运行。然后,修改后的响应标头会传递给下游客户端。传递给客户端:最终响应标头和正文会传递给客户端。