产品动态
安全公告
产品公告
User-Agent头部自动判断需返回的图片文件格式,自动触发图片格式转换。User-Agent 信息来响应指定的图片格式。从而帮助您在不需要更改业务逻辑的情况下,自适应地为用户提供最佳格式的图片,减少流量消耗。如果您希望在请求 URL 中主动控制触发图片格式转换,也可以参考使用 图片处理 能力。example.com,图片内容均存储于http://image.example.com/image/ 路径下,需将该路径下所有图片自适应根据客户端的浏览器类型响应最佳的图片格式。其中测试用原始图片请求 URL 为:https://image.example.com/image/test.jpg,访问后查看图片格式如下:
// 浏览器使用图片格式const broswerFormat = {Chrome: 'webp',Opera: 'webp',Firefox: 'webp',Safari: 'jp2',Edge: 'webp',IE: 'jxr'};addEventListener('fetch', event => {// 当函数代码抛出未处理的异常时,边缘函数会将此请求转发回源站event.passThroughOnException();event.respondWith(handleEvent(event));});async function handleEvent(event) {const { request } = event;const userAgent = request.headers.get('user-agent');const bs = getBroswer(userAgent);const format = broswerFormat[bs];// 无需转换图片格式if (!format) {return fetch(request);}// 图片格式转换const response = await fetch(request, {eo: {image: {format}}});// 设置响应头response.headers.set('x-ef-format', format);return response;}function getBroswer(userAgent) {if (/Edg/i.test(userAgent)) {return 'Edge'}if (/Trident/i.test(userAgent)) {return 'IE'}if (/Firefox/i.test(userAgent)) {return 'Firefox';}if (/Chrome/i.test(userAgent)) {return 'Chrome';}if (/Opera|OPR/i.test(userAgent)) {return 'Opera';}if (/Safari/i.test(userAgent)) {return 'Safari'}}

Image.example.com。/image/*。
curl --user-agent "chrome" https://image.example.com/image/test.jpg -iContent-Type 信息,是否为 image/webp。
curl --user-agent "safari" https://image.example.com/image/test.jpg -iContent-Type 信息,是否为 image/jp2。
curl --user-agent "Trident" https://image.example.com/image/test.jpg -iContent-Type 信息,是否为 image/vnd.ms-photo。
https://image.example.com/image/test.jpg,可通过响应图片的格式查看当前边缘函数是否已生效。https://image.example.com/image/test.jpg,该图片响应为 webp 格式。
https://image.example.com/image/test.jpg,该图片响应为 jp2 格式。
https://image.example.com/image/test.jpg,该图片响应为 jxr 格式。
文档反馈