0

背景:

我正在尝试开发一个加载屏幕插件,可以集成到我们的移动富媒体广告中。其中一些广告使用几张图片来制作翻书式动画,所以这样的东西真的很有用。它需要在 iPhone 4.0+ 和 Android 2.2+ 上运行,最好是在 Windows Phone 7.1 上运行。

我过去编写加载屏幕的方式是创建一系列图像对象并将其源设置为图像 url。然后对于该对象的每个 onload、onerror 或 onabort 事件,我会将加载过程增加 1 并将其显示在加载屏幕叠加层上。

但是,根据团队成员的建议,我一直在研究使用数据 URI 将图像数据直接编码到网页上,使用 PHP。这种方法的唯一缺点是如果有很多图像,它会导致网页打开缓慢。

几天前,我发现了 Mark Kolich 的一篇博文,其中他使用 data uri 在服务器端脚本中编码一系列图像,将其包装在 json 响应中,然后将所有这些图像文件发送回他的 Web 应用程序。这是一个好主意,但是,如果我在加载屏幕中使用该概念,那么加载进度将在一个 ajax 请求中从 0% 变为 100%。因此,如果加载过程需要几秒钟,那可能不足以保持访问者的兴趣。我需要在中间展示一些进展。

去做:

因此,我需要做的是采用 Mark 的方法并弄清楚如何使响应更加实时。我想这样做,这样我就可以向我的加载器 php 脚本发送一个带有图像列表的 AJAX 请求,并让我的 php 脚本每次(或每隔一次,或每 5 次等)更新多个响应并返回成功完成了这些图像的读取和编码。

我意识到我可能过于复杂了。php 脚本将如此快速地处理这些图像,以至于返回客户端代码的喋喋不休将毫无意义,因为它会立即完成。在这种情况下,使用 setTimeouts 模拟与这些图像相关的加载过程可能更有意义,直到 JSON 响应返回。或者我可能走在正确的轨道上并且有一个阈值我应该开始考虑这种方法,因为加载时间太长了。

有任何想法吗?有什么例子吗?

4

2 回答 2

0

试试彗星。它允许多部分响应,这可以让您获得这些定期更新,但仍然只有一个 HTTP 请求进行。

于 2011-08-24T19:20:08.160 回答
0

正如@Marc B 所说,Comet 或 WebSockets 解决方案(带有旧版 Web 浏览器的后备)绝对是您正在寻找的解决方案。

Comet 可能有点棘手,最终 HTTP 流和 HTTP 长轮询解决方案是 HTTP 的解决方案。WebSockets 是一种更好的方法,因为它们是标准化的,并且在我看来,正在成为服务器和客户端双向实时通信的标准。PHP 的实时基础架构有一些解决方案:

如果您更愿意使用托管服务来消除安装和维护实时基础架构的痛苦,特别是如果您只想在事件发生时将更新从服务器推送到客户端(iOS、Android、WP7 上的浏览​​器)(当应该显示新图像或更新数据库等)然后托管解决方案绝对是一个不错的选择(注意:我为托管解决方案提供商工作)。

我在这里编制了托管解决方案列表:

请参阅:托管实时技术

于 2011-08-26T11:26:23.950 回答