Welcome

首页 / 脚本样式 / Ajax / Ajax高级程序设计:提交节流

Ajax高级程序设计:提交节流2011-08-23 希赛网 预先获取是一种从服务器获取数据的模式;Ajax解决方案的另一方面是向服务器发送数据。由于想避 免页面刷新,这对于发送用户数据时显得更为重要。在传统的网站或Web应用程序中,每次点击都会向服 务器发送一个请求,因此服务器总是知道客户端的行为。而在Ajax模型中,用户与网站或应用程序交互 时,并非每一次点击都会产生请求。

一种解决方案是向传统的Web解决方案一样,在用户每次操作时都向服务器发送数据。因此,当用户 输入一个字母时,该字母就会立即发给服务器。在输入每个字母时都将重复这个处理过程。这种方法所 存在的问题是,在很短的时间内可能创建大量的请求,这不仅可能引起服务器端的问题,也可能在每个 请求发出和处理的过程中使得用户界面变得很慢。提交节流(Submission Throttling)设计模式则是解决 这个问题的另一种方法。

使用提交节流模式,可以将要发送到服务器端的数据存入客户端的缓存中,然后在预定的时间一次性 发送数据。大名鼎鼎的 Google Suggest就是这样的一个例子。它并没有在输入每个字符时发送请求,而 是等待一个特定的时间后再将文本框中所有当前的字符一次性发送到服务器。从输入到发送的处理过程 进行了精细的调整,使用户根本感觉不到延迟。提交节流在一定程度上提高了Google Suggest的速度。

提交节流通常要么在网站或应用程序第一次装载时,要么当出现一个特定的用户操作时开始。紧接着 ,将调用一个客户端的函数来对数据进行缓冲处理。时常检查用户的状态看其是否处于空闲(idle)状态( 以避免与用户界面冲突)。如果用户仍然在操作,那么继续收集数据。当用户空闲了,则说明他已不再执 行操作,就该决定是否发送数据了。确定的方法取决于具体的使用场景;或者希望收集到的数据达到一定 数量才发送,或者每当用户空闲时就发送。在数据发送之后,应用程序通常将继续收集数据,直到收到 了服务器的响应或者一些用户操作中止了数据收集的过程。图3-2描述了这个过程。

图 3-2

提交节流模式一般从不用于关键任务的数据。如果数必须在一个特定的时间范围内传送到服务器,最 好还是采用传统的表单,以确保信息准确及时的传送。