如何创建增量加载网页

5 投票
6 回答
7194 浏览
提问于 2025-04-15 17:08

我正在写一个页面,用来处理大量数据。因为返回的数据量太大,所以我的页面加载起来几乎是无穷无尽的,等到结果出来的时候可能要等很久。因此,我需要实现一个逐步加载的页面,就像这个网址一样:

http://docs.python.org/

每次输入搜索词时,页面会不断加载,直到有结果出来,然后逐步显示,感觉很酷 :D。

[编辑] 我使用的是Python CGI(服务器端)和Jquery(客户端)。我在这里问过一个类似的问题:

当数据在服务器上可用时,立即在网页上显示结果

我想在服务器上只请求一次脚本,然后让客户端页面逐步显示结果,这让我很头疼。如果我没理解错的话,长轮询之类的东西并不适用于这种情况,对吧?

我正在尝试使用flush()这个方法,但可能我在这里漏掉了什么,始终无法让它工作 :(,结果总是一次性全部传到客户端。而且获取的前几个字节和结果都是非常笼统的术语。如果有人能给我一些可以运行的代码,我会非常感激,因为我现在很困惑。非常感谢。

[编辑] 由于我想坚持只调用一次的方式,我尝试关闭Apache2的mod_deflate,但到目前为止都失败了。我在网上搜索了这个问题,发现有一些和我一样的情况,但都没有找到解决办法 :(。

6 个回答

1

要实现这个功能,可以使用JavaScript在页面加载完成后获取数据,这种方法通常被称为“AJAX”。

如果你告诉我们你正在使用哪个平台,就会有人能给你更具体的信息——市面上有很多工具包可以帮助你,你不需要从头开始写JavaScript。

1

听起来是时候用AJAX了。当用户提交一个查询时,发送一个AJAX请求到服务器去获取一些结果。在你得到回应之前,可以显示一个“加载中”的提示信息。在页面上设置一个JavaScript定时器,让它每隔几秒刷新一次结果,直到某个标志被设置,表示没有更多结果了,这样就可以停止刷新了。可以让服务器把结果暂时存储在会话中,或者存储在数据库里。你的定时器可以发起一个AJAX请求到服务器,看看是否有新的结果被找到并存储在会话/数据库中,然后更新HTML输出,显示到目前为止找到的所有结果。

这可能会很有趣/有用:发布了开创性的AJAX增量搜索白皮书 - 数据匹配引擎来救援

3

有很多方法可以实现这个目标,但基本的技巧是让搜索程序在完成之前就把结果返回到网络上。这通常是通过每隔一段结果就明确调用一次flush()函数或者类似的操作来完成的。

现在,展示这些结果你可以选择:

  • 使用AJAX:返回一个非常小的页面,里面有JavaScript代码,这段代码会触发搜索,并在结果被逐步返回时修改网页内容(或者多次调用搜索程序,带上一个参数来指定你想要多少结果和从哪个位置开始)。

  • 使用简单的HTML:使用浏览器不需要等到完全加载才能显示的HTML(这主要是避免使用表格,因为表格通常需要等到整个表格的数据都到齐后才能显示)。

当然,如果我们知道你在用什么编程语言,你可以得到更具体的建议。

撰写回答