你能为AJAX调用添加优先级吗?

时间:2011-11-14 19:11:30

标签: javascript jquery ajax

我正在创建一些使用ajax获取页面信息的插件。现在有不同的插件可以执行不同的功能。

所有插件都需要独立使用,但我还想添加它们可以很好地协同工作的功能。

所有不同的插件都有自己的JavaScript文件和功能。这在HTTP请求方面没有问题,因为大多数人都有插件,在网站被瘫痪时将所有文件合并为一个。

-

现在提出我的问题。正如我所说,不同的插件获得了网站的不同部分。例如,帖子计数,用户推文,用户统计信息,发表评论。

现在我可以指定从网站调用此信息的优先级。我想不能将它们全部合并到一个ajax调用中,因为它们都是单独的工作组件。

任何人都知道一个很好的解决方案,我可以首先得到评论,然后是统计数据等等。

我选择的JS框架是jQuery。

2 个答案:

答案 0 :(得分:5)

一种通用方法是为挂起的AJAX调用实现优先级队列。每个插件都会将其调用放在队列中,并在调用时具有相关的优先级,并且AJAX队列处理器将按优先级顺序通过队列。

以下是jQuery优先级队列插件的示例:

http://benalman.com/code/projects/jquery-message-queuing/docs/files/jquery-ba-jqmq-js.html

此外,这里已经为AJAX请求实现了一个:

Sequencing ajax requests

答案 1 :(得分:4)

2018年答案

仍然无法在XMLHttpRequestwindow.fetch调用上设置明确的优先级,但是Google提出了一个新的API提案,称为“优先级提示”。

https://wicg.github.io/priority-hints/#examples

到目前为止,任何浏览器均不支持; Chrome 70 has shipped an experimental implementation behind the flag.

  

从非关键Fetch API请求中减少网络竞争

     

优先级提示可用于降低非关键性访存的优先级   API请求以避免它们与更重要的请求竞争。

     

新闻网站对文章内容提出了重要的Fetch API请求   可能最终会争夺对次要资源的请求   喜欢相关内容。

<script>
 // Critical Fetch request for article content 
 fetch('/api/articles.json').then(/*...*/)

 // Request for related content contending with the above request 
 fetch('/api/related.json').then(/*...*/)
</script>
     

通过在第二个Fetch请求上使用重要性属性,我们可以   提示该请求的优先级较低,从而降低了   它与文章内容的提取请求竞争。我们也可以   明确指出第一个请求的优先级很高,因此   提取请求尚未具有较高优先级的浏览器   对页面很重要。

<script>
 // Critical Fetch request for article content 
 fetch('/api/articles.json', { importance: 'high' }).then(/*...*/)

 // Request for related content now reduced in priority
 // reducing the opportunity for contention
 fetch('/api/related.json', { importance: 'low' }).then(/*...*/)
</script>