iOS网络缓存策略

简介: iOS网络缓存策略

网络缓存模块是移动网络应用的核心模块,对于一些固定的数据或实时性要求并不太强的数据,开发者往往会在应用中使用缓存策略对数据进行持久化保存,直到缓存的数据过期,在缓存过期之前,相同的网络请求都将被拦截。这种做法有许多优势,列举如下。


(1)节省用户网络传输流量。


(2)本地数据可以更快地加载,优化用户体验。


(3)在断网的情况下,用户依然可以浏览曾经浏览过的数据


为网络请求设置缓存策略



使用Xcode创建一个名为RequestCacheTest的工程,首先在工程的Info.plist文件中添加支持工程进行HTTP请求的相关键值。在ViewController类的viewDidLoad方法中添加如下测试代码。

NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:10];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
    NSLog(@"%@",data);
}];
[task resume];


上面的代码使用NSURLSession的类方法从www.baidu.com地址进行数据请求,这里的dataTaskWithRequest方法通过异步的方式进行网络请求,请求返回的数据在block中通过参数传递给开发者。在创建NSURLRequest请求对象时,上面使用了requestWithURL:cachePolocy:timeoutInterval方法,这个方法的第1个参数设置请求地址URL;第2个参数是请求的缓存策略;第3个参数设置请求的超时时间,测试代码中设置了10s,如果10s后无响应数据,请求就会按超时失败处理。缓存策略可以设置的参数为NSURLRequestCachePolicy类型的枚举,这个枚举中除了一些定义的缓存策略外,常用策略如下(以Objective-C版本为例):

typedef NS_ENUM(NSUInteger, NSURLRequestCachePolicy)
{
    //使用HTTP/HTTPS中定义的缓存策略
    NSURLRequestUseProtocolCachePolicy = 0,
    //无论有无本地缓存数据,都从服务器进行请求
    NSURLRequestReloadIgnoringLocalCacheData = 1,
    //先检查缓存数据,如果无缓存再进行请求
    NSURLRequestReturnCacheDataElseLoad = 2,
    //类似于离线模式,无论有无缓存都不进行请求
    NSURLRequestReturnCacheDataDontLoad = 3,
};


在上面的缓存策略中,最常用的是NSURLRequestReturnCacheDataElseLoad,这种策略也是基于大多数移动应用的缓存思路。NSURLRequestUseProtocolCachePolicy缓存策略是由服务端定义的,是HTTP/HTTPS协议自带的缓存策略。


运行一次上面的工程,之后将网络断开,再次运行工程,可以看到打印区域依然打印出了请求数据,实际上第2次的请求已经不通过网络获取了,而是直接从本地获取。


摘自《iOS开发实战:从入门到上架App Store(第2版)》

目录
相关文章
|
4月前
|
安全 Linux 虚拟化
Cisco IOS XRv 9000 Router IOS XR Release 7.11.2 MD - 思科 IOS XR 网络操作系统
Cisco IOS XRv 9000 Router IOS XR Release 7.11.2 MD - 思科 IOS XR 网络操作系统
263 3
Cisco IOS XRv 9000 Router IOS XR Release 7.11.2 MD - 思科 IOS XR 网络操作系统
|
4月前
|
监控 安全 网络协议
Cisco Identity Services Engine (ISE) 3.5 发布 - 基于身份的网络访问控制和策略实施系统
Cisco Identity Services Engine (ISE) 3.5 发布 - 基于身份的网络访问控制和策略实施系统
509 1
Cisco Identity Services Engine (ISE) 3.5 发布 - 基于身份的网络访问控制和策略实施系统
|
6月前
|
安全 KVM 虚拟化
Cisco Identity Services Engine (ISE) 3.4 - 基于身份的网络访问控制和策略实施系统
Cisco Identity Services Engine (ISE) 3.4 - 基于身份的网络访问控制和策略实施系统
327 2
Cisco Identity Services Engine (ISE) 3.4 - 基于身份的网络访问控制和策略实施系统
|
6月前
|
机器学习/深度学习 数据采集 运维
匹配网络处理不平衡数据集的6种优化策略:有效提升分类准确率
匹配网络是一种基于度量的元学习方法,通过计算查询样本与支持集样本的相似性实现分类。其核心依赖距离度量函数(如余弦相似度),并引入注意力机制对特征维度加权,提升对关键特征的关注能力,尤其在处理复杂或噪声数据时表现出更强的泛化性。
329 6
匹配网络处理不平衡数据集的6种优化策略:有效提升分类准确率
|
5月前
|
监控 安全 Devops
DevOps 流水线的网络安全盲区与防御策略
在软件研发中,DevOps流水线加速了开发与交付,但也带来严重安全风险。自动化节点和第三方集成成为攻击入口,凭证泄露、供应链渗透、配置错误和依赖混乱等问题频发。企业需构建全流程安全体系,嵌入自动化安全策略,强化访问控制与监控,提升全员安全意识,实现效率与安全的协同发展。
491 1
|
12月前
|
人工智能 安全 网络安全
网络安全领导者有效缓解团队倦怠的四步策略
网络安全领导者有效缓解团队倦怠的四步策略
|
7月前
|
存储 监控 算法
基于 Python 跳表算法的局域网网络监控软件动态数据索引优化策略研究
局域网网络监控软件需高效处理终端行为数据,跳表作为一种基于概率平衡的动态数据结构,具备高效的插入、删除与查询性能(平均时间复杂度为O(log n)),适用于高频数据写入和随机查询场景。本文深入解析跳表原理,探讨其在局域网监控中的适配性,并提供基于Python的完整实现方案,优化终端会话管理,提升系统响应性能。
208 4
|
8月前
|
缓存 负载均衡 网络协议
电商API接口性能优化技术揭秘:缓存策略与负载均衡详解
电商API接口性能优化是提升系统稳定性和用户体验的关键。本文聚焦缓存策略与负载均衡两大核心,详解其在电商业务中的实践。缓存策略涵盖本地、分布式及CDN缓存,通过全量或部分缓存设计和一致性维护,减少后端压力;负载均衡则利用反向代理、DNS轮询等技术,结合动态调整与冗余部署,提高吞吐量与可用性。文中引用大型及跨境电商平台案例,展示优化效果,强调持续监控与迭代的重要性,为电商企业提供了切实可行的性能优化路径。
|
9月前
|
缓存 搜索推荐 CDN
HTTP缓存策略的区别和解决的问题
总的来说,HTTP缓存策略是一种权衡,需要根据具体的应用场景和需求来选择合适的策略。理解和掌握这些策略,可以帮助我们更好地优化网页性能,提高用户的浏览体验。
246 11
|
11月前
|
数据采集 缓存 JavaScript
数据抓取的缓存策略:减少重复请求与资源消耗
本教程聚焦于提升爬虫效率与稳定性,通过结合缓存策略、代理IP技术(如爬虫代理)、Cookie和User-Agent设置,优化数据采集流程。以知乎为例,详细讲解如何抓取指定关键词的文章标题和内容。内容涵盖环境准备、代码实现、常见问题及解决方案,并提供延伸练习,帮助读者掌握高效爬虫技巧。适合具备Python基础的初学者,助你规避网站机制,顺利获取目标数据。
315 2
数据抓取的缓存策略:减少重复请求与资源消耗

热门文章

最新文章