imageproxy阅读

之前在zhuqu.com时,同事写了一个图片服务器,调研了很多blog,用php写的,提供了上传、裁剪、负载均衡等功能。但有一些缺点,

  • 负载均衡是硬编码到配置中(当然量不大,问题也不大)
  • 提供图片和图片转换功能糅合在一起,一个项目维护,服务架构不清晰
  • 为了在保存原始图片的同时,支持水印,不同尺寸缩略图的需求,文件目录设计的很复杂(当然有明确的规则实际还好)
  • 图片安全问题,因为原始图片和对外图片放在同一个服务器上,为了不让外部调用到原始图片,禁止掉了特定的目录
  • 一些规则分布在了项目的各处,没有统一起来,增加维护代价

imageproxy将规则和图片转化,以及权限控制单独提出了一层,这里对外的图片都是imageproxy转化后的结果,并且图片的存储可以自由实现,可以使用disk,也可以使用mem,当然存储的位置肯定和原始图片时分开的

这里有一个怎么引入cdn的问题,之前引入cdn是在图片管理的mysql表中新增了cdn地址,地址是通过cdn服务提供上提供并批量生成。其实只要将通过imageproxy得到的图片存储给cdn即可。

imageproxy中使用了很多go中常用的通过包装标注库中对象,提供扩展方法的技巧,推荐研究研究。

imageproxy阅读
Share this