Pie*_*ers 1 caching ios afnetworking
我们正在构建一个iOS应用程序,它使用AFNetworking连接到运行Tornado的服务器.服务器Cache-Control: private, max-age=900在响应中包含标头.在我的本地计算机上运行服务器时,我可以告诉AFNetworking使用缓存的值,因为服务器没有收到来自应用程序的重复请求的请求.当我们将相同的Tornado服务器部署到测试机器时,来自应用程序的每个请求都会导致在服务器上收到请求,忽略缓存的值.
两种设置之间的唯一区别是服务器的URL以及通过HTTPS连接访问测试服务器的事实,而localhost使用HTTP.HTTPS是否会影响AFNetworking的缓存,如果是这样,我们如何让AFNetworking尊重缓存头?
不知道它是否会有任何帮助,但无论如何它是AFNetworking使用NSURLConnection,它使用NSURLCache共享缓存.AFNetworking在缓存方面绝对透明,并没有做任何具体的事情.我的请求是https,并且缓存得很好.
Cache-Control响应指令允许源服务器覆盖响应的默认可缓存性:private指示响应消息的全部或部分是针对单个用户的,并且不得由共享缓存缓存.这允许源服务器声明响应的指定部分仅针对一个用户,并且不是其他用户的请求的有效响应.私有(非共享)缓存可以缓存响应. http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1
如果可接受,请尝试将政策更改为公开.记录来自应用程序的响应标题,并查看您的cache.db,看看实际上是否存在缓存.
尝试配置共享缓存 - 有些内容
int cacheSizeMemory = 1*1024*1024; // 4MB
int cacheSizeDisk = 100*1024*1024; // 100MB
[[NSURLCache sharedURLCache] setMemoryCapacity:cacheSizeMemory];
[[NSURLCache sharedURLCache] setDiskCapacity:cacheSizeDisk];
Run Code Online (Sandbox Code Playgroud)
关于这个的另一个很好的解读 http://petersteinberger.com/blog/2012/nsurlcache-uses-a-disk-cache-as-of-ios5/
| 归档时间: |
|
| 查看次数: |
3178 次 |
| 最近记录: |