首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS UIWebView loadRequest太久了

iOS UIWebView loadRequest太久了
EN

Stack Overflow用户
提问于 2015-03-18 09:16:43
回答 2查看 3.3K关注 0票数 2

我的应用程序里有一个UIWebView

代码语言:javascript
复制
-(void)viewDidLaod{
    NSURL *url = [NSURL URLWithString:@"some url string"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadRevalidatingCacheData timeoutInterval:30.0];        
    myWbView.delegate = self;
        [myWebView loadRequest:request];

        if ([timer isValid]) {
            [timer invalidate];
        }else{
            timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(addSec:) userInfo:nil repeats:YES];
             //counting seconds
}

-(void)webViewDidFinishLoad:(UIWebView *)webView{
    if (webView.isloading){
    NSLog(@"LOADING");//it takes 5-8 seconds in average keep logging this
    }else{
    NSLog(@"FINISH");//since the request started,8-15 seconds later this is logged out
    }
}

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
NSLog(@"LOAD FAIL: %@",error);
}

下面是我要加载的http://www.businessinsider.com/netanyahus-opponent-has-officially-conceded-defeat-in-the-israeli-elections-2015-3,我将webview控制器放在一个pageViewController中,每当我滑动到下一页时,就会启动一个新的加载请求。

(当删除视图时,我确实停止了任何未完成的加载,这样它就不会阻止web操作)

有时我会收到一些错误消息,比如:

作为应用程序开发的新手,我完全不知道我的代码出了什么问题,是某个线程卡住了,还是使用JavaScript/HTML5 5的网页影响了速度?

我查看了Flipboard应用程序(iOS7版本),它使用webview加载内容页面,在用户点击上面的任何帖子后立即响应。即使UIWebView的加载速度通常很慢,性能也可能更快。

任何建议的指南链接/背景知识,我应该知道,将不胜感激。

PS:由于另一个更好的东西WKWebView只支持在iOS8和以后(在我的应用程序WKWebView以与UIWebView一样的速度加载,但在HTML5试验场的分数更高),我仍然需要UIWebView为iOS7。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-19 02:21:48

嗯,您打印的错误的NSLocalizedDescription显示了正在发生的事情:“太多的HTTP重定向。”

当你试图访问一个网页,而不是给你你想要达到的网页,服务器可以回复一个重定向-一个不同的网页的地址,你应该去替代。例如,访问缩短的链接通常会将您重定向到真实的页面;受密码保护的网站可能会将您重定向到登录页面;或者重新设计的站点可能会将旧地址重定向到他们的新位置。

但是,如果不小心实现,这个特性最终可能会通过无限重定向来锁定浏览器:例如,假设www.example.com/a将您重定向到www.example.com/b,而www.example.com/b将您重定向回www.example.com/a。因此,浏览器对它们所遵循的重定向数量施加了限制--通常大约是10或15次--以避免陷入这种循环。

您所得到的错误意味着,由于某种原因,访问该页面会导致浏览器连续多次被重定向--如此之多,以至于它只是假定某些东西一定出错并放弃了。

坐在这里没有你的应用程序副本来检查,我不能告诉你那些重定向是什么,更不用说为什么要发布这些重定向,但你至少可以使用Safari Web检查器回答第一个问题。您可以在Safari的“开发”菜单中找到它,它可以在Safari首选项中启用;该菜单中有一些选项可以检查iOS设备或模拟器中的网页。您可能还必须在设备的Safari设置或模拟器的Safari设置中打开Web检查器选项。

Web检查器的Timeline工具可以告诉您要通过什么重定向。一旦你知道了这一点,你可能就能弄清楚它为什么要做它正在做的事情,甚至可能调整你的应用程序来解决这个问题。(例如,您的UIWebView使用的用户代理字符串可能会混淆所涉及的服务器。不过,这完全是猜测,所以不要以为这就是现在发生的事情。)

票数 3
EN

Stack Overflow用户

发布于 2015-03-18 11:01:46

在后台移动带有性能选择器的请求,否则它会阻塞您的UI线程。另一点,UIWebView对象很重,

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29118014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档