为什么用UIWebView预览新的360视图会这么慢?

时间:2016-12-09 15:09:44

标签: ios uiwebview xamarin.ios

我正在构建一个 Xamarin.iOS 应用,并且有一个非常奇怪的问题。

从应用内部,用户可以从不同角度拍摄多张物体照片。然后将这些图像发送到服务器,使用a jQuery plugin, like this chair生成 360视图(全景)。结果是服务器上的文件夹包含.html文件,.css和.js文件以及图像。上传完成后,服务器会返回一个指向应用程序的链接,该链接会在UIWebView中加载.html页面。

问题是,当新的360视图准备就绪并显示在屏幕上时,左/右滑动超慢。超慢。与此同时,我有另一个屏幕,用户可以看到目前所有以前的360视图列表。当其中一个" old"加载了360度视图超快,可以轻松刷卡。

为什么新的360视图预览会如此缓慢?

我正在加载简单的链接:

using (var nSUrlRequest = new NSUrlRequest(url))
{
    webView.LoadRequest(nSUrlRequest);
}

如果我对旧360视图的网址进行硬编码,预览就会很棒。如果我加载最后生成的网址,则预览速度非常慢。

1 个答案:

答案 0 :(得分:0)

使用此jQuery模块时,这两件事通常会导致拖动速度变慢:

  1. 您的Web服务器未请求客户端缓存图像,即图像响应中不存在负责客户端缓存(expires或max-age)的HTTP头。不确定是否是这种情况,因为您的其他观点似乎工作正常。

  2. iPhone上的Safari对给定页面上可以同时出现的图像数据总量有限制。我上次检查时,总共约7-10mb。一旦达到此限制,Safari就会开始从内存中释放一些图像,这将导致非常慢的拖动,因为这些图像将再次从服务器请求(在拖动期间)。

  3. 如果Xamarin的网页浏览控件使用Safari作为底层浏览器引擎(我认为就是这种情况),这可能就是问题所在。如果是这样,您需要缩小360度视图中的图像大小或图像数量和/或降低图像质量,以便在加载所有图像时不超过此限制。

    另一个似乎也可以使用的选项是在iframe中加载360视​​图,而这似乎与iOS上的Safari中的限制无关。