使用 imgproxy 处理 ActiveStorage 图片变换

使用 imgproxy 处理 ActiveStorage 图片变换

💡 原文中文,约2400字,阅读约需6分钟。
📝

内容提要

最近将Geeknote的图片处理换到了imgproxy,imgproxy是一个开源的图片处理引擎,可以替代ActiveStorage的图片处理。imgproxy的优势是将图片处理负载移出Rails进程,方便设置CDN,容易控制成本。配置imgproxy需要安装gem并在application.rb中添加配置。部署imgproxy可以使用fly.io,部署成功后添加环境变量并重启应用。imgproxy本身只处理图片,需要在其前面加CDN来处理缓存。以上是在生产环境使用imgproxy替代ActiveStorage图片处理的全过程。

Q&A

imgproxy是什么,有什么优势?

imgproxy是一个开源的图片处理引擎,优势包括将图片处理负载移出Rails进程、方便设置CDN和容易控制成本。

如何在Rails中配置imgproxy?

在Gemfile中添加gem 'imgproxy-rails',并在application.rb中配置IMGPROXY_ENDPOINT等环境变量。

imgproxy与ActiveStorage的主要区别是什么?

imgproxy返回的是代理地址,处理图片的责任转移给imgproxy,而ActiveStorage返回重定向地址,Rails需处理图片变换。

如何部署imgproxy服务?

可以使用fly.io部署,创建应用并配置相关参数,执行部署命令后添加环境变量并重启应用。

使用imgproxy时,如何设置CDN?

在imgproxy前面加CDN,例如使用Cloudflare为imgproxy域名开启代理模式并设置缓存规则。

在生产环境中使用imgproxy的注意事项有哪些?

需要使用S3兼容服务进行测试,imgproxy本身不处理缓存,需在其前面加CDN以避免重复生成图片。

➡️

继续阅读