如何在使用自定义NSURLProtocol时禁用缓存?

时间:2016-01-26 06:37:08

标签: javascript ios caching uiwebview nsurlprotocol

我有一个UIWebView的应用,用于加载本地文件。 我已经创建了一个自定义URL协议,我用它来处理传递给Web视图的数据,并在startLoading中添加了:

[self.client URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageNotAllowed];

同样在启动应用时,我已使用以下代码禁用了缓存:

NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil];
[NSURLCache setSharedURLCache:sharedCache];
sharedCache = nil;

但不幸的是,该死的东西仍然允许缓存本地文件。

当我关闭网页视图并再次打开时,javascript文件不会再通过我的网址协议加载。

我还应该设置什么才能让它发挥作用?

我的目标是始终通过自定义网址协议加载文件,而不仅仅是第一次。

对我来说,startLoading中的NSURLProtocol方法不会针对后续请求调用。

1 个答案:

答案 0 :(得分:0)

我怀疑问题是UIWebView不知道或不关心底层网络协议有关缓存的内容,因为缓存不是在NSURL级别发生的。您还需要发送/注入假的Cache-control标头,以便WebKit不会在该级别缓存它。