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

Sai*_*han 8 javascript ajax jquery

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

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

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

-

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

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

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

我选择的JS框架是jQuery.

jak*_*b.g 6

2020年更新

优先提示暂时搁置

2018 答案

仍然无法为XMLHttpRequestnorwindow.fetch调用设置明确的优先级,但是有一个由 Google 推动的新 API 提案,称为“优先提示”。

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

到目前为止,任何浏览器都不支持它;Chrome 70 已经在标志后面发布了一个实验性的实现。

减少来自非关键 Fetch API 请求的网络争用

Priority Hints 可用于降低非关键 Fetch 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>
Run Code Online (Sandbox Code Playgroud)

通过在第二个 Fetch 请求上使用重要性属性,我们可以暗示该请求的优先级较低,从而减少它与文章内容的 Fetch 请求竞争的机会。我们还可以明确声明第一个请求的优先级为高,以便 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>
Run Code Online (Sandbox Code Playgroud)


Sco*_*t A 5

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

这是一个jQuery优先级队列插件的示例:

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

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

对ajax请求进行排序