0

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

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

  1. 删除 HTTP 响应标头Pragma: no-cache
  2. 将 Cache-Control 标头设置为“max-age=900”(15 分钟)

但是,这些服务器端更改似乎只对 UIWebView 是必需的,而不是对 Safari 和 Chrome 等实际浏览器而言。在某些情况下,本地应用程序开发人员对他们调用的服务器的控制有限或没有控制。因此,最好让客户端控制 UIWebView 的这种行为,使其表现得像移动 Safari 一样。任何建议将不胜感激!

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

4

1 回答 1

0

尝试使用此代码在 webview 中加载 url:

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

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval: 10.0]; NSURLConnection *connection=[[NSURLConnection alloc] initWithRequest:request delegate:nil];

if (connection) { urlData = [NSURLConnection sendSynchronousRequest: request];

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

}

[连接释放];

于 2013-06-27T13:27:14.233 回答