Gmail的定期邮件抓取工作如何?

Sam*_*Sam 7 javascript php ajax gmail json

当我使用Gmail时,即使我没有刷新页面,我收到的一些新邮件也会出现在收件箱中.我相信这将在Ajax中完成.

有没有与它非常相似的好演示?定期检查并获取JSON数据(我不确定它是否是JSON数据..)来获取新数据?

谢谢!

Jes*_*hen 7

定期刷新的问题在于,虽然对某些不太时间关键的事情(例如电子邮件提取)有好处,但它不是即时的.因此,您不希望将它用于聊天之类的事情,即等待甚至五秒钟的响应时间过长.您可以减少轮询间隔并在一秒或甚至半秒内发出请求,但随后您将迅速超载浏览器并浪费资源.

对此的一种解决方案是使用称为ajax长轮询的技术(被其他人称为'comet'或'reverse ajax').使用这种技术,浏览器会产生一个持续时间很长的ajax请求,这个请求在有新数据可用之前不会返回.该请求位于服务器上(您需要运行特殊的服务器端软件以可扩展的方式处理此问题,但您可以将其与PHP一起作为演示进行处理)直到新数据可用,此时它将返回到客户端新数据.当客户端收到数据时,它会在服务器上发出另一个长轮询请求,直到有更多数据.我相信这是gmail使用的方法.

这是长轮询的要点,你必须进行一些修改,因为大多数浏览器如果长时间没有返回就会过期ajax请求,所以如果ajax请求超时,客户端必须再发一个请求(但是超时通常是一分钟或更长的时间间隔).但这是主要的想法.

服务器端的实现比客户端复杂得多(客户端只需要几行js).


Pan*_*cus 1

虽然我不确定 gmail 的具体实现,但 AjaxPatterns 站点对他们所谓的定期刷新有一个很好的概述:--> http://ajaxpatterns.org/Periodic_Refresh。我一直将这种风格称为“心跳”

他们的解决方案的要点是:

浏览器周期性地发出XMLHttpRequest调用来获取新信息,例如每五秒调用一次。该解决方案利用浏览器的事件调度功能来提供一种让用户了解最新更改的方法。

它们包括一些实际示例的链接和一些示例代码。