3

我们已经构建了一个内部企业 iPad2+ 应用程序,该应用程序连接到 Drupal CMS,内容(文本/图像/视频)通过 REST API 传送到应用程序。

当用户首次启动应用程序时,系统会提示他们通过 WIFI 网络下载内容。我们遇到内容无法下载不一致的问题,即有时 60 张图片无法下载;其他时候 20 张图片失败。由于我们已将视频添加到下载组合中,因此内容失败的频率更高。

服务器详情:

  • 视窗服务器
  • IIS7.5
  • PHP 5.3
  • MYSQL5.1

应用详情:

  • Require.js: 提供 JavaScript 文件和模块加载
  • Backbone.js: 提供前端 JavaScript 应用程序框架
  • Cordova (v2.7.0): 用于提供在 iOS 上运行的环境
  • Raphael.js: 用于程序图形和动画
  • jQuery 和插件: 用于 Dom 操作、动画和交互
  • Bootstrap: HTML 标记的基本框架

下载过程如下:

  1. 用户启动应用程序并被提示下载内容
  2. 下载开始
  3. 该应用程序现在对 REST API 进行 AJAX 调用以获取内容
  4. 成功获取后,REST API 会提供一系列内容(文本/图像/视频) - 最大视频文件大小 11mb
  5. 内容同步交付

我们可以添加逻辑以在失败时继续重试,但这可能会导致无限循环。内容下载大小约为。50mb,通过WIFI。

我们的测试:

  • 我们在世界上 3 个不同的地方进行了尝试:南非、英国和美国以及类似的问题。
  • 我们已经在同一台 iPad 上从同一台服务器测试了 300mb 的下载,并且下载正常

问题:

  • 谁能告诉我们为什么这会失败?
  • 问题可能出在我们缺少的 Drupal 配置问题上吗?

8 月 25 日更新:

我们做了更多的研究,似乎问题可能是 iOS Safari 在 60 秒时超时的结果,然后在下载之后一切都失败了 - 请参阅此处:http://www.sencha.com/forum/showthread。 php?111231-iOS-Safari-Mobile-AJAX-超时

有没有其他人遇到过这个问题?

我们已经尝试通过 LAN 下载,这 100% 没问题。WIFI是问题。

我们尝试在 x 秒后刷新下载脚本并重置超时计数器。我们已尝试检测下载是否失败并继续重试。

此刻愣住了……



8 月 28 日更新的解决方案:

更新的解决方案:我们已经解决了这个问题。问题根本在于 iOS Safari 在60secs时超时。为什么?我们不知道......我们所做的是获取要下载的完整列表文件,然后同步下载它们。60 秒时发生的事情是下载超时,我们丢失了文件列表。我们解决这个问题的方法是,我们在 60 秒时保存了未下载的文件列表,然后使用这个新列表再次开始下载过程,并重复此过程,直到所有文件成功下载。


4

0 回答 0