NSURLCache

NSURLCache讲解

NSURLCache 会将数据缓存到沙盒路径下的Library/Caches 中,通过请求的url+参数来作为key储存的

Http 缓存流程

Http 缓存流程

缓存是否过期 根据服务器端返回的 max-age判断的, 影响的是下一次网络请求

处理http cache的优先级:

先判断资源是否命中强缓存,命中则直接从disk里拿到资源;

如果没有命中强缓存,判断是否命中协商缓存,命中则走协商缓存;

如果命中了协商缓存,会发起请求,服务端根据Request Header里的If-None-Match(对应Etag)和If-Modified-Since(对应Last-Modified)判断资源是否过期,没过期则返回304状态码,浏览器依旧用disk里的资源。如果资源过期,则服务端会返回新的资源;

如果也没有命中协商缓存,则这个请求不走缓存策略,发起真实的请求,从服务端拿资源

Cache-Control在请求头和响应头里的区别

请求头里的Cache-Control影响的是当前这一次请求

响应头里的Cache-Control是告诉浏览器这样存储,下次依照这样来。影响的是下一次请求

Cache-Control:max-age=0 这个值表示,这个请求按照协商缓存的规则走,一定会发出真实的请求。这里和响应头里的max-age=0有不同

Cache-Control:no-cache 表示这次或下次请求不会读缓存资源,即便缓存没有过期,或者资源并没有修改

缓存:控制客户端访问数据方式

服务器设置Cache-Control:max-age=5000 控制客户端请求数据从获取缓存取还是服务器数据库取

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • NSURLCache为你的url请求提供了内存以及磁盘上的综合缓存机制。使用缓存可以减少向服务发送请求的次数,同时...
    iOneWay阅读 677评论 2 2
  • NSURLCache NSURLCache为应用程序的URL请求提供复合的内存和磁盘缓存机制。作为Foundati...
    天下林子阅读 1,668评论 0 1
  • 转载:https://blog.csdn.net/jason_chen13/article/details/519...
    chasitu阅读 1,455评论 0 6
  • 概览 缓存设计应该是每个客户端程序开发所必须考虑的问题,如果同一个功能需要多次访问,而每次访问都重新请求的话势必降...
    字节跳动技术团队阅读 1,251评论 1 22
  • APP 中有很多从服务器获取数据、资源的需求,为了节省流量、加快访问速度、离线使用等需求,就会使用到网络缓存。HT...
    莫云溪阅读 1,324评论 0 1