User-Agent ヘッダーに基づいて返す画像ファイル形式を自動的に判断し、画像形式の変換を自動的にトリガーする方法を説明します。User-Agent 情報に応じて指定された画像形式を適応的に返します。これにより、ビジネスロジックを変更することなく、ユーザーに最適な形式の画像を適応的に提供し、トラフィック消費を削減できます。リクエスト URL で画像形式変換のトリガーを積極的に制御したい場合は、Image Processing 機能を参照して使用することもできます。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形式になります。
フィードバック