主要慢的原因在于拿oss上真实图片地址的时间,所以对每张图片的地址做了缓存:
比如数据库存储图片地址为:upload/anonymous_report/asdasdas.jpg
真实图片地址为:https://sdfsdf.com/dfsdfsfdsdfslfj
每次获取图片时:
//图片缓存获取 $anonymous_image = unserialize(Redis::get("anonymousImage")) ?: [];
//图片数据数组 foreach ($images as $value) { //存在就从缓存拿数据 if(isset($anonymous_image[$value['image']])){ $result[$value['anonymous_report_id']][]=$anonymous_image[$value['image']]; }else{ //不存在就拿到真实数据后缓存起来 $this_image=$ossService->getSignUrl($value['image']); $result[$value['anonymous_report_id']][]=$this_image; $anonymous_image[$value['image']]=$this_image; } }
//缓存起来 Redis::set('anonymousImage', serialize($anonymous_image));
这样数据就比较快了