UIWebView中的Html5缓存清单?

Tyl*_*ler 19 iphone html5 caching uiwebview

我希望能够使用html5缓存清单将图像本地存储在通过UIWebView应用程序访问该页面的iPhone上.

我已经设置了一个我认为符合规格的样本,并且似乎适用于safari 4和移动游戏,但不适用于我的应用程序UIWebView.

示例html设置为http://bynomial.com/html5/clock3.html.

这与提供的样本非常相似HTML5 draft standard.

以下是我用于测试的示例应用程序的完整(非模板)代码:

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

  // I thought this might help - I don't see any difference, though.
  NSURLCache* cache = [NSURLCache sharedURLCache];
  [cache setDiskCapacity:512*1024];

  CGRect frame = [[UIScreen mainScreen] applicationFrame];
  UIWebView* webView = [[UIWebView alloc] initWithFrame:frame];
  [window addSubview:webView];

  NSString* urlString = @"http://bynomial.com/html5/clock3.html";
  NSURL* url = [NSURL URLWithString:urlString];
  NSURLRequest* request = [NSURLRequest requestWithURL:url];
  [webView loadRequest:request];

  [window makeKeyAndVisible];
}
Run Code Online (Sandbox Code Playgroud)

我已经回顾了一些关于stackoverflow的相关问题,但它们似乎没有提供解决这个问题的信息.例如,我很确定我尝试缓存的文件不是太大,因为它们只是几个小文本文件(方式<25k).

有关如何使其工作的任何想法?

Mar*_*mus 26

我在UIWebView中使用.manifest文件工作.我在Apple开发者论坛上发现了这个技巧.

您必须为清单文件提供正确的mime类型:它必须是"text/cache-manifest"类型 - 如果是其他任何内容,那么您将不会缓存您的文件.

您可以在http://web-sniffer.net/上使用web-sniffer 查看服务器返回的标头.

如果您在Web服务器上使用.htaccess文件,则将以下行添加到.htaccess文件中:

AddType text/cache-manifest .manifest
Run Code Online (Sandbox Code Playgroud)

确保在进行此更改后清除浏览器缓存以查看效果.

HTH马克

编辑:仅在iOS 4.0及更高版本上支持此功能.你需要为iOS 2.x和3.x实现自己的缓存机制:-(

  • 任何人搜索的额外提示:您不需要网络嗅探器.只需启动终端会话并发出以下命令:`curl -I http:// YOUR_DOMAIN/PATH/TO/CACHE_MANIFEST (4认同)
  • 这不再是交易破坏者了. (3认同)