jQuery发布大文本数据传输(最终加载)

时间:2014-03-20 06:19:34

标签: javascript jquery ajax

问题:

我有一个基于jquery ajax(post)的网站,每次用户导航到另一个页面时,网站都不刷新。这意味着我必须使用ajax提取数据并将其呈现给用户。现在,为了提取小文本数据,该系统运行良好。然而,一旦文本数据很大(假设超过200,000个单词),加载时间就相当高(特别是对于移动用户)。我的意思是,ajax尝试加载全文信息并在加载完所有文本后显示它。因此用户必须等待很长时间才能获得信息。

如果你看一个不同的场景,让我们说维基百科。维基百科有大页面。但是,用户不会觉得他/她必须等待很多,因为页面会逐步加载(从上到下)。因此,即使页面很大,用户也已经忙于处理一些信息。当用户正在处理这些内容时,页面的其余部分将继续加载。

问题:

那么可以通过ajax显示有关实时负载的信息吗?意思是继续显示加载的内容而不是等待加载完整的文档?

1 个答案:

答案 0 :(得分:2)

Ajax(xmlhttprequest)在html5中是一个非常棒的功能,同样的事情,ajax比socket更好,我的意思是非持久连接但是只要连接是持久的(xmlhttprequest不可能)socket就是fastest

最简单的方法是使用网络套接字socket.io,但您需要一个JavaScript服务器才能使用此库,并且您可以使用管理工具免费获取一个主机:heroku。< / p>

如果您不想将JavaScript服务器与socketme库一起使用,则可以使用PHP服务器,但它有点复杂。

另外,您可以不同地思考,尝试发送大量数据。 20万字就像70ko(我尝试了lorem ipsum),上传速度与数据和连接速度/ ping相关。您可以在发送和解压缩服务器端之前以任何方式压缩数据。可能有一千种方法可以做到这一点,但我认为最简单的方法是找到一个JavaScript library to compress/uncompress数据,然后简单地使用你的jquery ajax发送压缩的内容。

编辑 - 2014年3月21日:

我误解了这个问题,你想显示当前的上传进度吗? 是的,可以通过使用onprogress事件,在jQuery中你必须遵循这个简单的例子:jQuery ajax progress