缓存的视频在哪里 b站手机缓存的视频在哪里( 二 )


[[SDImageCachesharedImageCache]clearMemory];
4.有了清理内存缓存,自然也有清理磁盘缓存的接口
[[SDImageCachesharedImageCache]clearDisk];
[[SDImageCachesharedImageCache]clearDisk];
SDWebImage 解析
解析主要围绕着SDWebImage的图片加载流程来分析,介绍SDWebImage这个框架加载图片过程中的一些处理方法和设计思路 。
1.给UIImageView设置图片,然后SDWebImage调用这个最终的图片加载方法 。
给UIImageView设置图片
2.开始加载之前图片先取消对应的UIImageView先前的图片下载操作 。试想,如果我们给UIImageView设置了一张新的图片,那么我们还会在意该UIImageVIew先前是要加载哪一张图片么?应该是不在意的吧!那是不是应该尝试把该UIImageView先前的加载图片相关操作给取消掉呢 。
[selfsd_cancelCurrentImageLoad]
[selfsd_cancelCurrentImageLoad]
取消对应的UIImageView先前的图片下载操作

缓存的视频在哪里 b站手机缓存的视频在哪里

文章插图
该方法经过周转,最后调用了以下方法,框架将图片对应的下载操作放到UIView的一个自定义字典属性(operationDictionary)中,取消下载操作第一步也是从这个UIView的自定义字典属性(operationDictionary)中取出所有的下载操作,然后依次调用取消方法,最后将取消的操作从(operationDictionary)字典属性中移除 。
最终的取消下载方法
3.移除之前没用的图片下载操作之后就创建一个新的图片下载操作,然后设置到UIView的一个自定义字典属性(operationDictionary)中 。
创建一个新的图片下载操作
4.看看如何创建一个新的图片下载操作,框架保存了一个失效的URL列表,如果URL失效了就会被加入这个列表,保证不会重复多次请求失效的URL 。
图片下载操作
根据给定的URL生成一个唯一的Key,之后利用这个key到缓存中查找对应的图片缓存 。
查找图片缓存
5.读取图片缓存,根据key先从内存中读取图片缓存,若没有命中内存缓存则读取磁盘缓存,如果磁盘缓存命中,那么将磁盘缓存读到内存中成为内存缓存 。如果都没有命中缓存的话,那么就在执行的doneBlock中开始下载图片 。
读取图片缓存
6.图片下载操作完成后会将图片对应的数据通过completed Block进行回调
图片下载操作
在图片下载方法中,调用了一个方法用于添加创建和下载过程中的各类Block回调 。
图片下载方法
添加该URL加载过程的状态回调Block
状态回调Block
如果该URL是第一次加载的话,那么就会执行createCallback这个回调Block,然后在createCallback里面开始构建网络请求,在下载过程中执行各类进度Block回调 。
构建网络请求
7.当图片下载完成之后会回到done的Block回调中做图片转换处理和缓存操作
图片转换处理和缓存操作
回到UIImageView控件的设置图片方法Block回调中,给对应的UIImageView设置图片,操作流程到此完成 。
Block中设置图片
总结
缓存的视频在哪里 b站手机缓存的视频在哪里

文章插图
SDWebImage作为一个优秀的图片加载框架,提供的使用方法和接口对开发者来说非常友好 。其内部实现多是采用Block的方式来实现回调,代码阅读起来可能没有那么直观 。此文章旨在给大家讲解SDWebImage这个框架的图片大概加载流程,其中具体细节限于篇幅无法详细深究 。本人能力有限,文章中难免有错误,若大家在阅读过程中有发现不合理或者错误的地方恳请在评论中指出,我会在第一时间进行修正,不胜感激 。
==========================================
评论中有一位朋友想了解关于304的处理,我这里补充说明下 。