美文网首页
SDWebImage缓存原理

SDWebImage缓存原理

作者: 梦回蓝桥 | 来源:发表于2016-12-05 20:04 被阅读282次

SDWebImage是一个功能很强大的缓存网络图片的框架。框架实现了异步加载网络图片、自动缓存图片数据等功能。以UIImageView加载网络图片为例,对其总体的加载图片流程做一个大致的分析。 首先使用SDWebImage先要导入 #import "UIImageView+WebCache.h"文件,设置网络图片的图片地址就可以加载图片。

NSURL *url = [NSURL URLWithString:@"http://do your self.jpg"];
[self.imageview sd_setImageWithURL:url placeholderImage:nil options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL) {
    
} completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
    
}];


根据网络图片地址,SDWebImageManager类提供了方法loadImageWithURL加载图片

进入loadImageWithURL方法,由SDImagerCache类提供方法queryDiskCacheForKey检查内存中是否有图片缓存,如果有图片缓存,回调block将图片数据传递给SDWebImageManger类。SDWebImageMange类回调block将图片数据传递给UIImageView+WebCache类去显示图片。

如果内存中没有图片缓存,将会去磁盘中查找图片缓存。这一步操作是异步操作,如果从磁盘中读取到图片数据,将图片数据添加到内存缓存中,回调block将图片数据传递给SDWebImageManger类。 SDWebImageMange类回调block将图片数据传递给UIImageView+WebCache类去显示图片

内存和磁盘中都没有图片缓存,由SDWebImageDownloader类downloadImageWithURL方法请求网络下载图片。

图片下载完成后,数据下载完成后交给 SDWebImageDecoder 做图片解码处理,图片解码完成后回调给SDWebImageDownloader类,SDWebImageDownloader类,回调block将图片数据传递给SDWebImageManger类。 SDWebImageMange类回调block将图片数据传递给UIImageView+WebCache类显示图片。

图片数据会写入到内存和磁盘缓存中。图片数据写入磁盘缓存中是异步操作,避免拖慢主线程。

总结:

1、SDWebImageManager *manager = [SDWebImageManager sharedManager];管理图片的加载,由SDImagerCache类检查内存中是否有图片缓存,或者由SDWebImageDownloader类请求网络下载图片。

2、SDImageCache 类管理图片缓存,读取图片缓存和写入图片缓存。

3、SDWebImageDownloader,根据URL向网络读取数据。

相关文章

  • SDWebImage常用认识

    SDWebImage常用认识: 一、SDWebImage原理:(管理者[SDWebImageManager]、缓存...

  • SDWebImage原理

    SDWebImage SDWebImage原理 核心类SDWebImageManager介绍 图片加载 图片缓存 ...

  • SDWebImage用法,原理以及实现过程

    简单实现缓存图片的方法: SDWebImage原理图: SDWebImage实现过程: 入口 setImageWi...

  • 面试相关问题

    1.常用第三库(原理及优缺) AF GPUImage SDWebimage缓存实现原理?缓存内存结构数据结构?缓存...

  • SDWebImage缓存原理

    SDWebImage是一个功能很强大的缓存网络图片的框架。框架实现了异步加载网络图片、自动缓存图片数据等功能。以U...

  • SDWebImage 缓存原理

    根据URL 去imageCache 获取图片 if (存在) { 显示imageCache里的图片 return ...

  • 开源第三方学习之SDWebImage

    SDWebImage 图片下载缓存框架 常用方法及原理 常见面试题: SDWebImage的最大并发数是多少? _...

  • Day5

    1 SDWebImage的底层原理:1.显示placeholderImage2.SDImageCache从缓存中查...

  • SDWebImage窥探

    SDWebImage SDWebImage是一款图片下载缓存框架,添加到工程中不会有烦人的警告原理:SDWebIm...

  • 笔记篇章《知识SDWebImage,KVO的实现原理...》

    请描述一下SDWebImage内部实现的原理 答:SDWebImage底层实现有沙盒缓存机制,主要由三块组成1、内...

网友评论

      本文标题:SDWebImage缓存原理

      本文链接:https://www.haomeiwen.com/subject/rjllmttx.html