美文网首页
缓存问题

缓存问题

作者: 成语笔记 | 来源:发表于2016-08-30 13:57 被阅读40次

两个要点:

关于Etag值的计算,Tornado是使用SHA1算法。

仅处理Get和Head请求中的Etag,对于Post不做处理,猜测是由于Post属于非幂等方法,使用Etag的意义不大。

客户端

客户端使用NSURLCache配合AFNetworking进行网络请求。

关于NSURLCache,这个库的硬盘缓存机制是在iOS5之后引入的,之前仅支持内存缓存。 因此如果你的App需要兼容到iOS4,可以采用SDURLCache这个第三方库。

NSURLCache有以下一些缓存策略值,在NSMutableURLRequest的cachePolicy可以进行设置。

策略值含义

UseProtocolCachePolicy默认值

ReloadIgnoringCacheData已废弃,使用LocalCacheData代替

ReloadIgnoringLocalCacheData忽略本地缓存

ReloadIgnoringLocalAndRemoteCacheData忽略本地和远程缓存(未实现)

ReturnCacheDataElseLoad仅缓存不存在时下载

ReturnCacheDataDontLoad仅使用缓存不下载

ReloadRevalidatingCacheData验证远程和本地的一致性,不一致时进行下载(未实现)

注:虽然NSURLRequestCachePolicy定义的值有7个,但是其中两个是未实现的(Unimplemented),另外一个已废弃,因此实际可使用的仅有4个值

有关NSURLCache的进一步详细说明,可以参看 Mattt Thompson 的这篇文章

客户端的实现有以下几个要点:

在请求回调的block中加入对Etag值进行固化操作,使用NSKeyedArchiver的形式保存到本地文件,以请求的url后缀作为key

AFHTTPClient继承自AFHTTPRequestOperationManager,需要重写HTTPRequestOperationWithRequest方法, 根据网络情况设置合适的缓存策略,即在有网络时通过Etag检查缓存一致性,无网络时直接使用缓存

在AppDelegate中需要对NSURLCache进行初始化,固化后的缓存文件会放在(App Sandbox)/Library/Caches/(your bundle identifier)/NSURLCache中,以SQLite数据库文件的形式存放

在Etag检查一致的情况下,服务端会返回304,此时需要在FailBlock中调用cachedResponseObject方法,取出本地缓存数据

摘取关键代码如下:

相关文章

  • 高并发与缓存

    本文主要讲述高并发下缓存会出现的问题。 在高并发下,缓存会出现的问题有:缓存一致性、并发问题、穿透问题、缓存的雪崩...

  • Redis第9课:缓存设计与优化

    我们将在这篇讨论以下七个问题。 缓存收益与成本的问题 缓存更新的策略 缓存颗粒的控制 缓存穿透的优化 无底洞问题的...

  • 缓存问题

    一、缓存更新策略 一般情况来说,缓存更新策略有三种: 先删除缓存,后更新数据库 先更新数据库,后更新缓存 先更新数...

  • 缓存问题

    两个要点: 关于Etag值的计算,Tornado是使用SHA1算法。 仅处理Get和Head请求中的Etag,对于...

  • 缓存问题

    1.缓存的产生 在Ajax的get请求中,如果运行在IE内核的浏览器下,其如果向同一个url发送多次请求时,就会产...

  • 缓存问题

    1.缓存穿透:请求访问了缓存中没有的数据,或者缓存宕机,导致请求直接查db。 解决办法:把没有的数据也缓存一分,但...

  • 缓存问题

    强制客户端刷新 location.reload(true) 是强制刷新,无论文档的最后修改日期是什么,它都会绕过缓...

  • 缓存问题

    用了缓存之后,有哪些常见问题? 常见的问题,可列举如下: 写入问题 缓存何时写入?并且写时如何避免并发重复写入? ...

  • 缓存问题

    缓存的本质 先聊一下缓存存储的基础。首先,局部性原理,是缓存存储的基础,即在局部的时间,对数据的访问是局部的、集中...

  • 缓存穿透、缓存并发、缓存失效之思路变迁

    在用缓存的时候,基本上会通用遇到以下三个问题: 缓存穿透 缓存并发 缓存失效 一、缓存穿透 上面三个图会有什么问题...

网友评论

      本文标题:缓存问题

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