0

我目前有一个已发布到应用商店的应用。我只是注意到应用程序的一个部分存在错误。此应用程序需要用户通过 POST 方法登录。这是我的场景。

使用用户 A 登录。登录后,会以模态方式调用另一个 viewController。在 viewDidLoad 上的这个 viewController 中有 3 个 webview。这是我调用 loadRequest 从我的网络服务器检索数据并在网络视图中显示结果的地方。

到目前为止,所有这些工作都很好。

用户A 注销,然后我登录用户B。当 userB 加载 webviews 时,显示的是 userA 数据而不是 userB 的数据。

到目前为止,这就是我尝试解决缓存问题所做的工作。1) NSURLMutableRequest - 将缓存策略设置为 NSURLRequestReloadIgnoringLocalAndRemoteCacheData

2)在我的帖子数据中附加一个随机数,以使每次调用在某种程度上都是唯一的 3)修改了我的 Apache2 配置以包括:

SetEnvIf Request_Method "POST" IS_POST Header 添加 Pragma "no-cache" env=IS_POST

4)在我的 viewWillDisappear 方法中,我添加了以下内容:

[[NSURLCache sharedURLCache] removeAllCachedResponses];
self.view = nil;
[self.view removeFromSuperview];

我还将结果为零的 3 个 webview 设置为零。

我在这里想念什么?如果我停止应用程序并重新启动它,我会看到正确的数据。此外,我正在向控制台登录我的 URL 被请求,他们实际上正在发送正确的数据。第一个 webview 仍在加载,而不是当前的 webviews 数据。在这一点上,我不知所措。我希望有人能指出我正确的方向。这个项目也使用了 ARC。

一如既往地提前感谢!

4

1 回答 1

0

当 userB 正在加载时,在 WebViewDidFinishLoading 方法中尝试重新加载 webview。

if(userB){
  [webView Reload];
}

重新加载将清除所有以前的缓存。

于 2013-05-08T05:17:20.233 回答