您可以为AJAX调用添加优先级吗?

Can you add priorities to AJAX calls

本文关键字:添加 优先级 调用 AJAX      更新时间:2023-09-26

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

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

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

,

现在来回答我的问题。正如我所说的,不同的插件可以得到网站的不同部分。例如,帖子计数,用户tweets,用户统计,帖子评论。

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

有谁知道一个好的解决方案,我可以如何指定首先获得评论,然后是统计数据,等等。

我选择的JS框架是jQuery

一个通用的方法是为等待的AJAX调用实现一个优先级队列。每个插件将把它们的调用放在队列上,并在调用上有一个相关的优先级,AJAX队列处理器将按照优先级顺序处理队列。

下面是一个jQuery优先队列插件的例子:

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

同样,这里有一个已经实现的AJAX请求:

排序ajax请求

2020年更新

优先级提示暂时搁置

<标题> 2018

XMLHttpRequestwindow.fetch调用上设置明确的优先级仍然是不可能的,但是有一个由谷歌驱动的新的API提案称为"优先级提示"。

https://wicg.github.io/priority-hints/示例

到目前为止,没有任何浏览器支持;Chrome 70已经发布了一个实验性的实现。

减少非关键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请求中使用重要性属性,我们可以提示该请求的优先级较低,从而减少它与文章内容的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>