Http GET请求缓存问题

2019-08-17  本文已影响0人  字节码

GET 缓存导致的问题

在iOS 客户端通过AFNetworking 发起 GET 方式的HTTP请求时,导致数据始终不是最新的,即使断开网络连接,依旧能获取到response,原因就是其对GET 方式进行了缓存。

HTTP缓存

HTTP缓存的基本目的就是使应用执行的更快,更易扩展,但是HTTP缓存通常只适用于idempotent request(可以理解为查询请求,也就是不更新服务端数据的请求),这也就导致了在HTTP的世界里,一般都是对GET请求做缓存,POST请求很少有缓存。

GET多用来直接获取数据,不修改数据,主要目的就是database的search语句的感觉。用缓存(有个代理服务器的概念)的目的就是查db的速度变快。

POST则是发送数据到服务器端去存储。类似db里的update delete和insert语句的感觉。更新db的意思。数据必须放在数据库,所以一般都得去访问服务器端,而极少需要缓存。

解决GET 缓存的七种方式

// 忽略缓存
    NSURLSessionConfiguration *config = [NSURLSessionConfiguration ephemeralSessionConfiguration];
    AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc]initWithSessionConfiguration:config];

推荐使用第4种或第7种方式

上一篇下一篇

猜你喜欢

热点阅读