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中获取缓存数据, 再根据策略返回数据

  • 相关阅读:
    加分二叉树
    飞扬的小鸟
    洛谷P2066 机器分配
    解方程
    洛谷P1781 宇宙总统
    洛谷P1311 选择客栈
    洛谷P1081 开车旅行70分
    CSS清除浮动
    常见的内联元素与块状元素
    标签的权值问题(优先级)
  • 原文地址:https://www.cnblogs.com/air-liyan/p/13995782.html
Copyright © 2011-2022 走看看