【问题标题】:Too large an AJAX response for mobile safari?移动 Safari 的 AJAX 响应太大?
【发布时间】:2010-07-15 17:01:01
【问题描述】:

我在为移动 Safari 调试 Web 应用程序时遇到了一些问题。 Web 应用程序是相当复杂的服务器端模拟工具的前端。 Web 应用程序的工作原理概述如下:

  1. 用户会看到一个屏幕,他们可以在其中填写要执行的模拟的值。
  2. 用户单击“运行模拟”,此时对服务器进行 AJAX 调用。页面上的状态窗格已更新,表明正在运行模拟。一个 php 脚本使用 POST 的值运行模拟器,并返回一些 javascript 以首先更新状态栏,指示正在检索数据,然后设置另一个 AJAX 调用来请求结果数据。
  3. 服务器使用来自模拟的数据回复第二次 AJAX 调用 - 一些 json 格式的大型数组(大约 1-2mb 的总数据),以及一些用于清除状态窗格和绘图的 javascript结果的第一步。
  4. 然后用户可以使用一些滑块/选项卡来查看不同的绘图、浏览模拟时间步长等。

所有这些都适用于主要的桌面浏览器(IE 7+、Firefox(win、mac、linux)、safari(Mac、windows)等)。但是,在移动 safari 上,第 1 步和第 2 步运行良好(执行所有 javascript 以更新状态窗格等),但在第 3 步一切都崩溃了——似乎返回的 javascript 从未执行(状态窗格从不清除,从不绘制结果)。

我已插入一些警报以进行调试,但这些警报也未执行。最后,我尝试返回除模拟数据之外的所有内容,并且一切正常(尽管图是空白的),因此在大量返回 json 数据时出现问题。 safari javascript 调试器没有显示错误,我不知道如何继续调试这样的东西。有什么想法吗?

【问题讨论】:

  • 之后的数据会怎样?如果以某种方式导入 DOM,则 1-2 MB 听起来很多。
  • 数据被传递给使用 Raphaël 创建的自定义绘图对象(绘图有一个时间滑块,因此可以在模拟中看到时间 t 的模拟结果)。因此,在任何给定时间,只有大约 10-20k 的数据被使用。话虽如此,由于时间滑块可用于动画模拟结果,因此流式传输数据可能效果不佳。到目前为止,我已经能够使用超过 10-20mb 的数据以这种方式进行绘图(尽管只使用本地服务器上的浏览器,并且只使用桌面浏览器)

标签: javascript iphone ajax mobile-safari


【解决方案1】:

我不能告诉你问题的答案,但我会这样调试:

  • 尝试让服务器只发回几 kb 的数据
  • 看看能不能打印出数据的大小
  • 将数据分解成更小更易于管理的块(JSON 本来就是要小)

就像我说的那样,这不是一个真正的答案。更多的方法。

【讨论】:

  • 感谢您的提示。我继续进行,并将模拟减少到只运行几个时间步长。似乎在返回的大约 512k 数据下,一切运行良好。目前有三个 json 数组被返回,所以在总共 1mb 中,每个大约是 350k。移动 safari 似乎确实存在一些上限——不确定是块大小还是总数据大小。会尝试一下并发布任何结果。
  • 这篇文章可能会有所启发:alistapart.com/articles/putyourcontentinmypocketpart2 如果你进入“智能手机,小脑袋”部分,它会说有一个 10Mb 的总限制 - 我猜你正在打那个。
【解决方案2】:

Safari(移动设备和桌面设备)存在一个已知问题,将 AJAX 响应大小限制为大约 512K。

【讨论】:

  • 你有这个来源吗?
  • 该信息的任何资源?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 2011-09-28
  • 1970-01-01
  • 2017-11-24
  • 2020-01-03
相关资源
最近更新 更多