iOS中的URL缓存策略

通常我们在向后台请求数据的时候不会注意到的一点,URL的缓存策略,其实比我们想象中的全面,我们一直在借鉴SDWebImage框架中对图片的处理、存储、缓存和下载策略,但是,原生的URL中也对此有类似的应对策略!

需求: 我之前遇到的问题: 与HTML5 界面交互,当然需要请求URL,但是,由于请求的数据每次都会有变化,并且webView 自身的缺陷,导致界面的缓存影响了新界面的展示,这个时候,就可以用URL自身的策略来解决相关的问题!!

PS : 缓存的注意事项
缓存的设置需要根据具体的情况考虑,如果请求某个URL的返回数据:
  (1)经常更新:不能用缓存! 针对实时变化数据;
  (2)一成不变:缓存,节省流量,增加速度!
  (3)偶尔更新:可以定期更改缓存策略 或者 清除缓存
提示:如果大量使用缓存,会越积越大,建议定期清除缓存


NSURLRequest 的七种缓存策略(经常使用的:1、2、5、6,至于原因,请看完下面7中作用就知道了!

1> NSURLRequestUseProtocolCachePolicy = 0, 默认的缓存策略, 如果缓存不存在,直接从服务端获取。如果缓存存在,会根据response中的Cache-Control字段判断下一步操作,如: Cache-Control字段为must-revalidata, 则询问服务端该数据是否有更新,无更新的话直接返回给用户缓存数据,若已更新,则请求服务端.

2> NSURLRequestReloadIgnoringLocalCacheData = 1, 忽略本地缓存数据,直接请求服务端.

3> NSURLRequestIgnoringLocalAndRemoteCacheData = 4, 忽略本地缓存,代理服务器以及其他中介,直接请求源服务端.

4> NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData

5> NSURLRequestReturnCacheDataElseLoad = 2, 有缓存就使用,不管其有效性(即忽略Cache-Control字段), 无则请求服务端.

6> NSURLRequestReturnCacheDataDontLoad = 3, 死活加载本地缓存. 没有就失败. (确定当前无网络时使用)

7> NSURLRequestReloadRevalidatingCacheData = 5, 缓存数据必须得得到服务端确认有效才使用(貌似是NSURLRequestUseProtocolCachePolicy中的一种情况)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 30,160评论 8 265
  • 我在等你的时候 看见新芽抽出 于是 我慌得想它 在我等你的时候 那桃花儿也开了 于是 我就愿意留在 这一园粉色之中...
    阿青涩阅读 304评论 0 1
  • 上个月流量告急,花了十五块钱充值了七天流量包,附送了7天的会员,有爱奇艺和腾讯可选,浏览了一下会员片库,发现没有自...
    神身边的乐师阅读 323评论 0 0
  • 三分热度人常见 十之八九少坚持 吾缺自律九人中 理想梦想全都有 计划打算很完美 三天坚持是常事 一周之后重计划 一...
    娜娜紫阅读 163评论 6 1

友情链接更多精彩内容