美文网首页
HTTP缓存机制

HTTP缓存机制

作者: 深度码农患者 | 来源:发表于2020-05-07 22:27 被阅读0次

    在移动互联网时代,为了尽可能的为用户节省流程以及提高用户体验,对HTTP请求设计缓存机制是必不可少的,当前主流缓存策略有以下几种:

    • 系统缓存
      iOS系统为NSURLRequest提供了多种缓存策略,可以通过设置cachePolicy来设置请求的缓存策略
    1. NSURLRequestUseProtocolCachePolicy // 默认的缓存策略(取决于协议)
      这个是默认的缓存机制,当系统第一次请求该网络资源的时候,本地缓存中并不存在该资源文件,于是请求了整个资源文件,并且缓存该文件的缓存信息。
      当第二次请求该网络资源的时候,系统会在请求头中添加"if-Modified-Since"字段或者”if-None-Match“字段,将缓存信息携带上去,服务端根据缓存信息判断该资源是否发生了变化,如果没有变化,则返回304。
    2. NSURLRequestReloadIgnoringLocalCacheData
      该策略在每次请求资源时都会忽略本地的缓存内容,去请求最新的资源。
    3. NSURLRequestReloadIgnoringLocalAndRemoteCacheData // 未实现
    4. NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData
      忽略缓存,重新请求
    5. NSURLRequestReturnCacheDataElseLoad
      有缓存就用缓存,没有缓存就重新请求
    6. NSURLRequestReturnCacheDataDontLoad
      该策略有缓存就适应缓存,没有缓存就不发请求,当做请求出错处理。当本地并不存在对应的缓存资源时,回调接口就会报错,错误码-1008
    7. NSURLRequestReloadRevalidatingCacheData // 未实现

    iOS 系统使用NSURLCache单例类来管理网络请求的缓存。对于app来说,由于使用了同一个缓存对象来管理缓存,所以不同的网络请求都是使用同一个缓存来管理的。

    • 客户端缓存
      有时候系统的缓存策略不能满足客户端需求的时候,需要自己去做一些缓存处理,我们大概是这么设计的。
      在本地创建一个数据库,存储某个请求的最后一次缓存。在调用这个请求的时候,有一个cacheCompletion和requestCompletion,前者用于回调最近一次成功请求的缓存,后者用于回调真实请求的数据,用于解决网络接口请求慢导致不显示的问题。
    • CDN缓存
      请求大资源的一些CDN服务器会做一个本地缓存,如果缓存没有过期,则直接返回缓存的数据。如果缓存过期,在向源节点请求数据。
    • 服务器缓存
      主要是通过服务端redis缓存等机制实现的

    相关文章

      网友评论

          本文标题:HTTP缓存机制

          本文链接:https://www.haomeiwen.com/subject/gkftnhtx.html