背景
我正在尝试开发一个可以集成到我们的移动富媒体广告中的加载屏幕插件。其中一些广告使用多个图像作为动画风格的动画,所以这样的东西真的很有用。它需要适用于iPhone 4.0+和Android 2.2+,最好是Windows Phone 7.1。
我过去编码加载屏幕的方式我会创建一系列图像对象并将其源设置为图像网址。然后对于该对象的每个onload,onerror或onabort事件,我将加载过程递增1并将其显示在加载屏幕叠加层上。
然而,根据团队成员的建议,我一直在研究使用数据URI直接使用PHP将图像数据编码到网页上。回归到这种方法的唯一方法是,如果有大量图像,它可能导致网页缓慢打开。
几天前,我发现a blog post by Mark Kolich使用数据uri对服务器端脚本中的一系列图像进行编码,将其包装在json响应中,然后将所有这些图像文件发送回他的网站应用。但是,如果我在加载屏幕中使用该概念,那么在一个ajax请求中加载进度将从0%变为100%,这是个好主意。因此,如果加载过程需要几秒钟,那可能不足以响应刺激以保持访问者的兴趣。我需要在中间展示一些进展。
待办事项:
因此,我需要做的是采用Mark的方法并弄清楚如何使响应更加实时。我想这样做,所以我可以发送一个带有图像列表的AJAX请求到我的加载器php脚本,并让我的php脚本ping回多次响应,每次(或每隔一次,或每隔5次等)更新一次成功完成阅读和编码这些图像。
我意识到我可能会使它复杂化; php脚本将如此快速地处理这些图像,以至于回到客户端代码的聊天将毫无意义,因为它将立即完成。在这种情况下,使用setTimeouts sudo模拟与这些图像有关的加载过程可能更有意义,直到JSON响应返回。或者我可能走在正确的轨道上并且有一定的阈值我应该开始考虑这种方法,因为加载时间太长了。
有什么想法吗?有什么例子吗?
答案 0 :(得分:0)
试试Comet。它允许多部分响应,这可以让您获得这些定期更新,但仍然只有一个HTTP请求。
答案 1 :(得分:0)
正如@Marc B所说,Comet或WebSockets解决方案(旧版Web浏览器的后备版)绝对是您正在寻找的解决方案。
彗星可能有点棘手,最终HTTP流和HTTP长轮询解决方案可以解决HTTP问题。 WebSockets是一种更好的方法,因为它们是标准化的,并且在我看来,它正成为服务器和客户端双向实时通信的 标准。 PHP的实时基础架构有一些解决方案:如果您希望使用托管服务,这样可以消除安装和维护实时基础架构的痛苦,尤其是当您只是想在事件发生时将更新从服务器推送到客户端(iOS,Android,WP7上的浏览器)时(当应该显示新图像或更新数据库等)时,托管解决方案绝对是一个不错的选择(注意:我为托管解决方案提供商工作)。
我在这里编制了一个托管解决方案列表: