我应该如何处理缓存设置?

Posted

技术标签:

【中文标题】我应该如何处理缓存设置?【英文标题】:How should I deal with cache settings? 【发布时间】:2016-11-22 15:35:35 【问题描述】:

我正在为我公司的开发人员构建一个 SDK,包括总部和国外的开发人员。此 SDK 以 Singleton 的形式实现,并向开发人员提供从我们的公司服务器获取的数据对象(如果可能)。

我打算在 SDK 初始化时使用 NSURLCache 的 sharedURLCache 来配置 NSURLSessionConfiguration,但我担心,被共享后,缓存设置会被应用程序开发人员更改,可能会导致难以理解的错误。

有没有更好的办法?

【问题讨论】:

【参考方案1】:

假设您对 Objective-c 和 Swizzling 感到满意:

您可以添加一个 NSURLProtocol 来拦截相关调用并分别管理它们的缓存。

然后,为了防止其他 NSURLProtocols 覆盖您自己的(它们按照注册顺序进行检查),您可以调整调用以注册新的 NSURLProtocol [NSURLProtocol registerClass:[MyURLProtocol class]]; 并在您的备用 imp 中始终确保添加您的 NSURLProtocol作为最后一个。

我会确保这是有据可查的,并与使用您的 sdk 的任何开发人员进行沟通,以确保她了解她的 NSURLProtocol 总是会在您的 NSURLProtocol 上松懈

这里有一些引用 Swizzling 和 NSURLProtocol 来自唯一的 NSHipster...

【讨论】:

一个有趣的选择!

以上是关于我应该如何处理缓存设置?的主要内容,如果未能解决你的问题,请参考以下文章

在播放结果上设置 HTTP 标头(如过期) - 以及如何处理 ETag?

ASP.NET vNext 如何处理 config.json 中的缓存、压缩和 MimeMap?

iOS Web App - 如何处理过度的应用缓存?

spring-data-redis multiGet 如何处理缓存未命中?

如果成员节点出现故障,oracle coherence 分布式缓存中的复制如何处理?

如何处理作为 ES6 模块导入的 JavaScript 文件的缓存