【问题标题】:UIWebView cache in iOSiOS中的UIWebView缓存
【发布时间】:2012-02-21 21:02:22
【问题描述】:

我在我的应用中托管 UIWebView。看起来UIWebView 自己缓存图像和数据。 我想在应用启动时清除它的缓存。

清理 Safari 的缓存没有帮助。我发现刷新UIWebView 缓存的唯一方法是关闭我的iPhone 并再次打开它。关闭应用也无济于事。

Apple 文档对此只字未提……或者我遗漏了一些东西。以防万一,应用程序是使用 monotouch 创建的。

【问题讨论】:

    标签: ios ios5 uiwebview xamarin.ios browser-cache


    【解决方案1】:

    如果您想清除所有缓存的响应,可以采用以下方式:

    [[NSURLCache sharedURLCache] removeAllCachedResponses];
    

    【讨论】:

    • 对我不起作用。 UIWebView 仍然为我加载旧图像。
    【解决方案2】:

    有一个 view 缓存显示最后使用的页面的位图(就像我们在 Safari 中看到的那样)但看起来不像您看到的那样(因为它需要重新启动设备)。

    我之前没有注意到这种行为(也从未寻找过它;-)但下面的 answer 看起来很有希望。

    FWIW 这不是 MonoTouch 特有的。

    【讨论】:

      【解决方案3】:

      我已经尝试了所有关于堆栈溢出的建议,但都没有奏效。我让它工作并觉得它是一个可靠的解决方案的唯一方法是每次在临时目录上创建新的 html 文件(使用不同的目录名称 - Guid 效果最好),并复制所有相关的图像、脚本、css ,每次到那个临时目录。

      然后使用 NSUrlRequest 对象打开它

      string tempdir = Path.Combine(UIController.Common.DataFolder,System.Guid.NewGuid().ToString ());
      Directory.CreateDirectory (tempdir);
      
      //-- create your html on the tempdirectory here
      //-- copy all the images, and all the css, and js files
      
      UIWebView wv = new UIWebView(new RectangleF(30,30,480,680));
      NSUrlRequest req = new NSUrlRequest(new NSUrl (Path.Combine (tempdir,"default.html"), false),NSUrlRequestCachePolicy.ReloadRevalidatingCacheData,10);
      wv.LoadFinished += delegate(object sender1, EventArgs e1) 
      {
          //delete the tempdirectory 
          Directory.Delete(tempdir); 
      };
      

      【讨论】:

        猜你喜欢
        • 2013-09-07
        • 2016-10-14
        • 1970-01-01
        • 2013-09-09
        • 1970-01-01
        • 1970-01-01
        • 2013-04-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多