记:解决Glide图片框架配合阿里云Oss图片缓存问题 Glide缓存后缀验证图片

问题描述:
公司App 使用阿里云的Oss服务缓存图片,访问图片需要获取临时访问权限,将临时访问权限拼接与图片地址之后
地址格式入下:

    http://my-server/**photo_1**?access_token=XYZ1
    http://my-server/**photo_1**?access_token=XYZ2
    http://my-server/**photo_1**?access_token=XYZ3  

如上3个URL地址token不同但却是同一张图片, Glide默认是使用path直接进行标记缓存,这时会将上面三个url视为三张不同图片,重复访问三次 这是我们不想看到的,我们需要改变Glide默认图片缓存标记来实现图片的复用缓存,提升加载速度
解决方案:

public class OssGlideUrl extends GlideUrl {

    String url;

    public OssGlideUrl(String url) {
        super(url);
        this.url = url;
    }

    @Override
    public String getCacheKey() {
        //去除Glide缓存key中的Oss token
        if (url.contains("?")) {
            return url.substring(0, url.lastIndexOf("?"));
        } else {
            return url;
        }
    }
}

使用

GlideApp.with(ContextHandler.currentActivity())
                .asBitmap()
                .load(new OssGlideUrl(OssHandler.getOssObjectKeyUrl(objectKey)))
                .placeholder(placeHolder)
                .error(error)
                .into(target);

原文地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容