1.AWS CDN切图
介绍:
在移动互联网的快速发展、移动终端设备爆发式增长的当下,各种社交类APP 和电商平台为了提升访问速度与良好的用户体验,通常会根据客户端的不同性能、不同屏幕尺寸和分辨率提供适当尺寸的图片。开发者通常需要预先提供非常多种不同分辨率的图片组合,这样往往会增加管理难度和提高运营成本。
Lambda@edge的四个阶段:
查看器请求阶段:
- 当 CloudFront 收到查看器的请求,但还未检查请求的对象是否在边缘缓存中时,该函数会执行。
查看器响应阶段:
在将请求的文件返回到查看器之前,该函数会执行。
请注意,无论文件是否已在边缘缓存中,该函数都会执行。
但在以下情况下该函数不会执行:
当源返回 400 或更高的 HTTP 状态代码时
当返回自定义错误页面时
当从由查看器请求事件触发的函数中生成响应时
在 CloudFront 将 HTTP 请求自动重定向到 HTTPS 时(在查看器协议策略 的值为将 HTTP 重定向到 HTTPS 时)
源请求阶段:
- 只有在 CloudFront 将请求转发到源时,才会执行该函数。当请求的对象在边缘缓存中时,该函数不会执行。
源响应阶段:
在 CloudFront 收到来自源的响应之后及它将对象缓存在响应中之前,该函数会执行。请注意,即使从源返回了错误,该函数仍会执行。
但在以下情况下该函数不会执行:
- 当请求的文件在边缘缓存中时
- 当从由源请求事件触发的函数中生成响应时
两种情况
一种是直接将参数命名在文件中,一种是通过查询参数来发起请求
文件名为100x100.png:
工作流程:
1.客户端发起请求100x100.png像素的图片
2.在源请求中设置了Lambda@edge,此时会判断源站是否有相对应的图片
3.如果有则直接返回request,如果没有则进入以下流程
3.1 lambda会从源站将图片下载下来
3.2 lambda中的切图组建会将图片裁剪成指定大小。
3.3 lambda会将图片下载到源站中,并且返回request
带有查询参数:
工作流程:
1.客户端发起请求1.png像素的图片
2.在源请求中设置了Lambda@edge,此时会判断是否带有querystring
3.如果有则进入以下流程:
3.1 lambda会从源站将图片下载下来
3.2 lambda中的切图组建会将图片裁剪成指定大小。
3.3 lambda会将图片下载到源站的另外一个对象或者另外一个源站中(存储格式为100x100.png或者其他格式),并且修改源和路径或者修改源路径并且返回request
4.如果没有则直接返回request