评论系统需要对接多个网站,每个网站对评论里的图片的尺寸有不同的要求,并且为了在 amp 应用里可以正常显示,需要额外返回图片的宽度和高度
现在需要解决两个问题:
-
之前的接口数据里没有图片的宽度和高度属性
-
每个网站对图片尺寸有不同要求
对于第一个问题:
之前保存图片信息的方案很简单,只是把图片路径用”,”拼接起来,保存在数据库里;返回给前端时,把image字符串用”,”分割后简单处理即可
对于现在的新情况,这个方案明显不适用。
新方案:
为了避免每次请求都去从文件里读取图片的宽和高,需要将图片的宽和高保存起来,这里创建一个 MySQL 表来保存图片路径、宽度、高度等信息;实现的时候,需要考虑新旧数据的转换问题
对于第二个问题:
最简单的方法是为每个图片生成所有规格的缩略图,然后在 api 里返回所有的缩略图url
对于现在的新情况,这个方案也有明显的缺点:
假如图片规格特别多,为每个图片生成所有规格的缩略图,会浪费大量存储空间,生成大量无用的缩略图耗费服务器资源,前端返回的无用数据太多
新方案:
评论系统的前端展示,只需要两种图片:缩略图和大图,所以我决定给 app (一个网站就是一个app)添加两个字段来保存缩略图和大图的规格,具体细节如下:
-
app 新增两个图片规格参数: thumbnail size 和 big image size
-
thumbnail size 默认值为 100×100, big image size 默认值为 1000×1000
-
前端接口将只返回 thumbnail size 和 big image size的图片url
-
为了兼容性,前端接口的字段保持不变: images 字段对应 big image size 的图片, thumbnails 字段对应 thumbnail size 的图片
-
为接口添加版本号参数 ver, 当ver为新的时, images 和 thumbnails 字段采用新的格式: [{‘width’: 100, ‘height’: 100, ‘src’:’xxx.jpg’}],其中 width 是图片的宽度,height 是图片的高度,src是图片的url