• iOS之缓存


    缓存可以有效的提高用户体验,在没有网络的情况下,不至于应用没有任何的数据交互。还可以节省用户的流量,在网络良好的情况下,不至于每次都去请求网络数据。

    按需缓存,把从服务器获取的内容以某种格式存放在本地文件系统,之后对于每次请求,检查缓存中是否存在这块数据,只有当数据不存在(或者过期)的情况下才从服务器获取。

    预缓存可能需要一个后台线程访问数据并以有意义的格式保存,以便本地缓存无需重新连接服务器即可被编辑。

    缓存数据在客户端和服务器通信的过程

    1. 客户端请求数据,首先检测内存缓存中是否存在数据,如果内存缓存中有没有数据,再判断沙盒里面是否有数据,没有就去服务器里请求数据。

    2.客户端第一次拿到数据后,将数据缓存到沙盒中,以便以后使用

    3.在次请求数据是,当应用程序没有关闭,内存和沙盒里面都有数据,显示是会用内UC你中的数据

    4.当应用程序重新启动,内存中的数据就会被清理掉,显示就会从沙盒里面拿数据。

    AFNetWorking:

         由于GET请求一般用来查询数据,POST请求一般是发大量数据给服务器处理(变动性比较大)

       因此一般只对GET请求进行缓存,而不对POST请求进行缓存.

    代码体现:

         NSString * cachePath = @"你的缓存路径";

          AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

        NSString * url = @"你的请求地址";

           if ([[NSFileManager defaultManager] fileExistsAtPath:cachePath]) {

                //从本地读缓存文件
              NSData *data = [NSData dataWithContentsOfFile:cachePath];
         }else{
              [manager GET:url parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
               //写缓存
               NSString *cachePath = @"你的缓存路径";//  /Library/Caches/MyCache
               [data writeToFile:cachePath atomically:YES];
                    succsee(data);
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        }];

    }

    SDWebImage库的缓存

    这个库具有缓存管理,异步下载,同一个URL下载次数控制和优化等特征。

    1.UIImageView+WebCacha 加载网络图片的入口,setImageWithURL:placeholderImage:options: 

    会先把placeholderImage显示在控件上,然后由SDWebImageManager根据URL开始处理图片。

    2.SDWebImageManager,对图片进行管理的中转站,向下层读取Cache(调用SDImageCache),或者向网络读取对象(调用SDWebImageDownloader)

    3.SDImageCache可以对图片进行存储和读取,实现图片和内存清理工作。

    4.SDWebImageDownloader根据URL向网络读取数据。

    5.SDWebImageDecoder,对图像进行了一次解压,由于UIImage加载图片的时候才将Data解压成ARGB的图像。每次加载时都会有这个解压操作,这样做效率是十分低下的。而SDWebImageDecoder将包装在Data下的数据解压,画在一张新的图片上,方便以后加载图片是使用。

    SDImageCache分两个部分,一个是内存层面的,一个是硬盘层面的。内存层面的相当是个缓存器,当内存不够的时候会清除所有缓存图片。先搜索内存层面的数据,没有的话去访问磁盘,将图片从磁盘读取出来,然后做Decoder(解码),将图片对象放到内存层面做备份,再返回调用层

     

     

     

  • 相关阅读:
    搞笑的菜名
    sad news
    转载:比尔盖茨给adobe CEO的五点意见(歪版)/ 很搞笑 ;)
    [ZZ]TDSCDMA试商用网已经建成 开始向用户放号
    关于Java IDE
    候捷要来南京了吗?
    读书笔记:《Java2 教程》(二)
    [ZZ]当今世界十大定律
    久违了,博客园
    解决小型局域网中xp系统的机器不能共享资源的问题
  • 原文地址:https://www.cnblogs.com/lcl15/p/6923840.html
Copyright © 2020-2023  润新知