记:解决Glide图片框架配合阿里云Oss图片缓存问题 Glid

2018-07-02  本文已影响158人  二鸭儿

问题描述:
公司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);

原文地址

上一篇下一篇

猜你喜欢

热点阅读