Javascript 返回时,UIWebView始终从服务器刷新

Javascript 返回时,UIWebView始终从服务器刷新,javascript,objective-c,http,caching,uiwebview,Javascript,Objective C,Http,Caching,Uiwebview,我有一个为平板电脑优化的网站。它会在页面上显示一个链接,以向后导航,该链接调用JavaScript函数window.history.back()。在iPad上的Safari浏览器中,此链接通过从历史记录中加载缓存页面而不是向服务器发出另一个请求来实现。但是,当我在一个简单的本机应用程序中通过UIWebView打开同一个站点时,每次我使用该链接返回时,该链接都会向服务器发出请求 我发现我可以通过以下方式解决此问题: 删除HTTP响应头Pragma:no cache 将缓存控制标头设置为“最大年龄=

我有一个为平板电脑优化的网站。它会在页面上显示一个链接,以向后导航,该链接调用JavaScript函数
window.history.back()
。在iPad上的Safari浏览器中,此链接通过从历史记录中加载缓存页面而不是向服务器发出另一个请求来实现。但是,当我在一个简单的本机应用程序中通过UIWebView打开同一个站点时,每次我使用该链接返回时,该链接都会向服务器发出请求

我发现我可以通过以下方式解决此问题:

  • 删除HTTP响应头
    Pragma:no cache
  • 将缓存控制标头设置为“最大年龄=900”(15分钟)
  • 但是,这些服务器端更改似乎仅对UIWebView是必需的,而对Safari和Chrome等实际浏览器则不是必需的。在某些情况下,本地应用程序开发人员对他们调用的服务器的控制有限或没有控制权。因此,客户端控制UIWebView的这种行为似乎更可取,以使其行为类似于mobile Safari。如有任何建议,将不胜感激


    请注意,我的大部分测试都是在iOS版本为6.1.3的iPad 2.0上完成的。

    在webview中加载url时,请尝试以下代码:

    NSData*urlData; NSString*baseURLString=@“yoursite.com”; NSString*urlString=[baseURLString stringByAppendingPathComponent:@“yourfile”]

    NSURLRequest*request=[NSURLRequest requestWithURL:[NSURL URLWithString:urlString]缓存策略:NSURLRequestReturnCacheDataElseLoad timeoutInterval:10.0]; NSURLConnection*connection=[[NSURLConnection alloc]initWithRequest:请求委托:nil]

    如果(连接) { urlData=[NSURLConnection sendSynchronousRequest:request]

    NSString *htmlString = [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding];
    [webView loadHTMLString:htmlString baseURL:baseURLString];
    [htmlString release];
    
    }

    [连接释放]