我正在构建 Xamarin.ios 应用程序,并且有一个非常奇怪的问题。
从应用程序内部,用户可以从不同角度拍摄对象的多张照片。然后将这些图像发送到服务器,其中 360-View(Panorama)使用jQuery插件(如此椅子)生成。结果是带有.html文件,.css和.js文件以及图像的服务器上的文件夹。上传完成后,服务器将返回到该应用的链接,该链接将加载.html页面。
问题是,当新的360-View 已准备就绪并显示在屏幕上时,它是超级慢的左右。超慢。同时,我有另一个屏幕,用户可以看到到目前为止所有以前的360-Views的列表。当加载这些"旧" 360-Views 时,它是超级快速,并且可以轻松刷卡。
有什么想法为什么新的360视图预览太慢了?
我正在加载一个简单的链接:
using (var nSUrlRequest = new NSUrlRequest(url))
{
webView.LoadRequest(nSUrlRequest);
}
如果我硬编码旧360视图的URL,则预览显示出色。如果我加载了最后一个生成的URL,则预览超级慢。
这是使用此jQuery模块时通常会导致慢速速度的两件事:
-
您的Web服务器没有要求客户端缓存图像,即,在图像响应中不存在负责客户端缓存的HTTP标头(Expires或Max-age)。不确定是否是这种情况,因为您的其他观点似乎效果很好。
-
iPhone iOS上的Safari限制了可以在给定页面上立即存在的图像数据的组合量。上次我检查时,总共约为7-10MB。一旦达到此限制,Safari就会开始从内存中释放一些图像,这将导致非常慢的拖动,因为将再次(在拖动过程中)再次从服务器请求这些图像。
如果Xamarin的Web View控件使用Safari用作基础浏览器引擎(我认为是这样),则可能是问题。如果是这样,则需要减小图像大小或360视图中的图像数量和/或降低图像质量以在加载所有图像时不会超出此限制。
似乎也有效的另一个选项是将360视图加载到IFRAME内,这似乎不符合iOS上的Safari的限制。