腾讯云edgeone图片自适应缩放边缘函数部署与触发规则
腾讯云网站防护edgeone通过获取请求头中的
User-Agent
信息,来识别客户端类型,并使用 fetch API 获取源站图片,根据客户端类型对图片进行缩放,以实现图片自适应缩放的效果。这种实现方式可以提高网站的用户体验,使得图片在不同的设备上都能够以合适的尺寸呈现。本文老白博客简要说说如何在edgeone中启用该功能,以实现WordPress优化的目的。
1.功能说明
在 PC 端与移动端的浏览器地址栏中,输入匹配到边缘函数触发规则的 URL(如:https://www.xcbtmw.com/wp-content/uploads/2024/10/bt-wordpress.webp)
即可看到以下的效果:
使用 PC 端访问图片,图片缩放为 1280 x 720。
使用移动端访问图片,图片缩放为 480 x 270。
2.添加功能
在添加该功能之前,需要在站点加速模块中启用该功能,目前限时免费中。
2.1 站点列表-边缘函数
点击函数管理,选择新建函数
2.2 创建图片自适应处理
任意选择一个,比如图片处理,然后点击下一步
2.3 添加函数代码
全选删除已有的函数代码,然后添加下方的代码,点击部署。
addEventListener('fetch', event => { // 当函数代码抛出未处理的异常时,边缘函数会将此请求转发回源站 event.passThroughOnException(); event.respondWith(handleEvent(event)); }); async function handleEvent(event) { const { request } = event; const urlInfo = new URL(request.url); const userAgent = request.headers.get('user-agent'); // 请求非图片资源 if(!/.(jpe?g|png)$/.test(urlInfo.pathname)) { return fetch(request); } // 移动端图片宽度 let width = 480; const isPcClient = isPc(userAgent); // PC 端图片宽度 if(isPcClient) { width = 1280; } // 图片缩放 const response = await fetch(request, { eo: { image: { width, } } }); // 设置响应头 response.headers.set('x-ef-client', isPcClient ? 'pc' : 'mobile'); return response; } // 请求客户端类型判断 function isPc(userAgent) { const regex = /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i; if(regex.test(userAgent)) { return false; } return true; }
2.4 添加触发规则
选择and,然后host填写你添加的网站域名,URL Path选择图片:/image/*