ios - UIWebView 缓存不适用于 NSURLRequestReturnCacheDataElseLoad

标签 ios caching uiwebview browser-cache

我已经设置了一个兼容 ARC 的 iOS 6 SDK 构建的应用程序来尝试测试 UIWebView 和 NSURLCache sharedCache 的缓存。

我正在像这样形成对 UIWebView 的请求:

-(void)runRequestWithMode:(NSURLRequestCachePolicy)policyMode
{
    NSString *theURL = @"http://server.mine.com:5555/test.htm";

    NSURL *url = [[NSURL alloc] initWithString:theURL];
    NSMutableURLRequest* urlRequest = [[NSMutableURLRequest alloc] initWithURL:url
                                                                   cachePolicy:policyMode
                                                               timeoutInterval:30.0];

    if ([urlRequest cachePolicy] != policyMode) {
        NSLog(@"!!!!!!!!OVERRULED!!!!!!!");
    }

    [_webView loadRequest:urlRequest];
}

在应该加载的 UIWebViewDelegate 回调中:

    -  (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

//    NSLog(@"webView shouldStartLoadWithRequest loading %@", [[request URL] absoluteString]);

    NSLog(@"webView request cachePolicy: %d", [request cachePolicy]);

我的日志记录的控制台输出显示请求未使用我在运行此回调时在可变请求上设置的 cachePolicy。

即使我此时操作请求将 cachePolicy 设置为正确的初始设置,服务器站点仍然没有报告 304(数据请求是未更改的页面并使用缓存作为响应)

在使用 chrome 的桌面上,我确实从服务器收到了 304 响应,而当我重新加载页面时,我在设备上看到的是 200。

在我的应用委托(delegate)中,我设置了我的 url 缓存:

NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:4 * 1024 * 1024
                                                         diskCapacity:20 * 1024 * 1024
                                                             diskPath:nil];
[NSURLCache setSharedURLCache:URLCache];

我需要做什么才能让我的应用程序的 Web View 接收 304 响应?

任何帮助或阅读文档的指针都将不胜感激。

最佳答案

看起来 UIWebView 没有使用 NSURLCache...

How to cache content in UIWebView for faster loading later on?

对我这边的 UIWebView 出了什么问题有很好的洞察力。我会尝试这个,看看我是否可以使用它作为我的基础来实现最终解决方案。

关于ios - UIWebView 缓存不适用于 NSURLRequestReturnCacheDataElseLoad,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17310392/

相关文章:

ios - 快速将没有 nib 文件的现有 UIViewControllers 添加到 UITabBarController

ios - 从 API 填充数组时可能出现计时问题

java - ConcurrentLinkedHashMap 已经集成到 Guava 中是什么意思?

iphone - 在 UIViewController 上启用界面方向

iphone - 如何使用嵌入式 HTML 检查 youtube 视频是否存在

ios - 核心数据设计模式

iphone - 在 iOS 上添加与 tiff 文件的文件关联

IOS如何将JSON字符串保存和加载到内存

caching - 什么是缓存标签目录?

ios - swift 2.0 UIWebview 只显示白页