zoukankan      html  css  js  c++  java
  • iOS 缓存策略记录

    iOS开发有时候项目开发需要对请求进行缓存,比如特定url的请求素材 , 缓存又分为内存缓存和磁盘缓存,内存缓存个人理解为运行时的空间,程序运行时开辟的空间,程序结束又变为空闲空间。 磁盘缓存即是专门存在沙盒中的存放缓存文件的目录。

    网络请求缓存策略可以使用apple提供的缓存类NSURLCache
    NSURLCache 通过NSURLRequest对应NSCachedURLResponse映射的请求缓存,可以自定义缓存大小,也可以自定义缓存目录,缓存清除操作

    可以自定义:

    NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:4 * 1024 * 1024
    diskCapacity:30 * 1024 * 1024
    diskPath:nil];
    [NSURLCache setSharedURLCache:URLCache];

    也可以 从request请求中获取:
    NSURLCache* URLCache = [URLCache cachedResponseForRequest:self.request];

    iOS也对request提供缓存策略逻辑

    typedef NS_ENUM(NSUInteger, NSURLRequestCachePolicy)
    {
        NSURLRequestUseProtocolCachePolicy = 0, // 默认的缓存策略, 如果缓存不存在,直接从服务端获取
    
        NSURLRequestReloadIgnoringLocalCacheData = 1, //
    
    忽略本地缓存数据,直接请求服务端.
        NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4, // 忽略本地缓存,代理服务器以及其他中介,直接请求源服务端.
        NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData,
    
        NSURLRequestReturnCacheDataElseLoad = 2, // 有缓存就使用,不管其有效性(即忽略Cache-Control字段), 无则请求服务端.
        NSURLRequestReturnCacheDataDontLoad = 3, // 死活加载本地缓存. 没有就失败. 
    
        NSURLRequestReloadRevalidatingCacheData = 5,// 缓存数据必须得得到服务端确认有效才使用
    };

    // 配置缓存策略并设置过期时间
    NSMutableURLRequest *mutableRequest = [[NSMutableURLRequest alloc] initWithURL:url cachePolicy:cachePolicy timeoutInterval:timeoutInterval];

    实际应用:
    SDWebImage 缓存策略 是NSURLCache + SDImageCache 在下载操作开始时从request中获取缓存数据, 再根据策略返回数据

  • 相关阅读:
    3.13 获取位置
    团队博客(三)
    团队博客(二)
    团队博客(一)
    Android抽奖
    声网实现视频会议(二)
    声网实现视频会议(一)
    Android弹幕实现原理
    人月神话 胸有成竹
    Android的弹幕功能实现(四)
  • 原文地址:https://www.cnblogs.com/air-liyan/p/13995782.html
Copyright © 2011-2022 走看看