如何在iphone中缓存整个网页?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在iphone中缓存整个网页?相关的知识,希望对你有一定的参考价值。

我想在用户连接到网络时加载网页并将其存储离线(包括图像/资源)。如果用户没有连接到任何网络,那么我应该加载以前存储的网页。我尝试过NSData dataWithContentsOfURL:(NSURL *)urlNSString stringWithContentsOfURL,但这些商店只有html内容而不是资源。提前致谢。

答案

你可以用ASIHttpRequest做到这一点。如果您不想使用该项目(它不再处于活动状态),您可以查看代码及其功能。查看this了解更多信息。

另一答案
write this data into file using 

-(void)writeDataToFile:(NSString*)filename
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    if(filename==nil)
    {
        DLog(@"FILE NAME IS NIL");
        return;
    }
    // the path to write file
    NSString *filePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat: @"%@",filename]];
    /*NSData *writeData;
     writeData=[NSKeyedArchiver archivedDataWithRootObject:pArray]; */
    NSFileManager *fm=[NSFileManager defaultManager];
    if(!filePath)
    {
        //DLog(@"File %@ doesn't exist, so we create it", filePath);
        [fm createFileAtPath:filePath contents:self.mRespData attributes:nil];
    }
    else 
    {
        //DLog(@"file exists");
        [self.mRespData writeToFile:filePath atomically:YES];
    }

    NSMutableData *resData = [[NSMutableData alloc] init];
    self.mRespData=resData;
    [resData release];
}

并在下次加载它

另一答案

我不知道是否有像myWebView.cache4Offline = YES;这样的单行解决方案,但我担心只要你无法访问网站代码(即如果你想在你的应用程序内离线使任何网站可用),你有自己编程。考虑一下,它似乎并不那么困难:

  1. 扫描html字符串以获取图片网址(以及您需要的其他所有内容)
  2. 使用NSData dataWithContentsOfURL从互联网下载这些资源(可能有点烦人,因为相对/绝对URL)
  3. 使用NSData writeToFile将数据保存到文件:options:error:
  4. 用3中的filePath替换HTML中的URL。(或者,更好地使用约定来转换文件URL中的URL)

希望能帮助到你

另一答案

我认为简单的解决方案是“Safari客户端存储和离线应用程序编程指南”,https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/SafariJSDatabaseGuide/Introduction/Introduction.html

只有当你使用HTML5和webview制作应用程序时,到目前为止还没有测试过这种方法,所以它可能会起作用。

以上是关于如何在iphone中缓存整个网页?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 13 如何清理缓存?

从 MAC 捕获整个 iphone safari 网页

如何将url图像存储在缓存中,然后在iphone的imageview中显示

如何在 Django 中显式重置模板片段缓存?

如何缓存片段视图

Rails:旧数据与新数据不匹配时如何更新片段缓存