"fragmenting" HTTP 请求
"fragmenting" HTTP requests
我有一个 Angular 应用程序从 REST 服务器提取数据。我们提取的每个项目都有一些 "core" 数据 - 显示它的基本表示所需要的 - 然后是我所说的 "secondary" 数据、评论和其他用户可能想看也可能不想看的东西。
我正在尝试优化我们的请求模式,以最大限度地减少用户花在查看加载微调器上的总时间:一次拉取所有 (core/secondary) 数据会导致初始请求 return 太慢了,但是在用户请求我们还没有请求的东西之前只拉最基本的东西也会造成不必要的加载时间,至少因为我可以预料到他们想要看到它并在他们正在加载它的时候加载它忙着看核心内容。
所以,现在我首先进行 "core content" 拉取,然后在第一个成功回调结束时启动 "secondary" 拉取。这将是一个实验过程,但我想知道在这种情况下已经建立了哪些(如果有的话)最佳实践。 (我确定一个很好的答案是 google ,但在这种情况下我不太确定 google 是什么 - 因此这个问题的标题中有引号)
一个更具体的问题:我最好发起许多小的 HTTP 事务还是几个大的事务?我的直觉是做很多小的,特别是如果我能预料到用户最有可能首先看到的一些东西并尽快加载它们。但这里肯定有渐近线吗?还是我 off-base 完全属于这种思路?
我使用与您相同的方法,它对 many-keyed、10,0000+ collection.
非常有效
collection分页为ui.bootstrap.pagination,一次最多显示10条。可以按标题搜索。
所以我的做法是只检索 id
和 title
,整个 collection,所以搜索可以直接使用。
然后,as the items displayed on screen are in an array, I place a $watch on that array
。 $watch 的工作是获取数组中项目的完整详细信息(二次拉取),但当然只有在数组发生更改时才会这样做。
因此,在最坏的情况下,您只能提取 10 项的完整详细信息。
缓存结果以提高效率。它显示即时结果,因为 $watch 充当 pre-loader.
Am I better off initiating many small HTTP transactions or a few large ones?
我相信大宗交易,仅针对少数项目(可在屏幕上点击的项目)是非常有效的。
关于best practice
位:我想有很多方法可以实现你的目标;然而,the technique you are using works extremely well, as it retrieves only what is needed, and only just before it is needed
。
而且实现起来也很简单
此外,像你一样,我认为许多较小的拉动肯定比几个大拉动更好。但是,我被建议 去大拉 作为对这个问题的评论:Fetching subdocuments with angular $http
为了回答您关于搜索哪些关键字的问题,我建议:
progressive loading
另一种方法是使用 websockets 和 streaming loading
:Oboe.js 做得很好:
http://oboejs.com/examples
我有一个 Angular 应用程序从 REST 服务器提取数据。我们提取的每个项目都有一些 "core" 数据 - 显示它的基本表示所需要的 - 然后是我所说的 "secondary" 数据、评论和其他用户可能想看也可能不想看的东西。
我正在尝试优化我们的请求模式,以最大限度地减少用户花在查看加载微调器上的总时间:一次拉取所有 (core/secondary) 数据会导致初始请求 return 太慢了,但是在用户请求我们还没有请求的东西之前只拉最基本的东西也会造成不必要的加载时间,至少因为我可以预料到他们想要看到它并在他们正在加载它的时候加载它忙着看核心内容。
所以,现在我首先进行 "core content" 拉取,然后在第一个成功回调结束时启动 "secondary" 拉取。这将是一个实验过程,但我想知道在这种情况下已经建立了哪些(如果有的话)最佳实践。 (我确定一个很好的答案是 google ,但在这种情况下我不太确定 google 是什么 - 因此这个问题的标题中有引号)
一个更具体的问题:我最好发起许多小的 HTTP 事务还是几个大的事务?我的直觉是做很多小的,特别是如果我能预料到用户最有可能首先看到的一些东西并尽快加载它们。但这里肯定有渐近线吗?还是我 off-base 完全属于这种思路?
我使用与您相同的方法,它对 many-keyed、10,0000+ collection.
非常有效collection分页为ui.bootstrap.pagination,一次最多显示10条。可以按标题搜索。
所以我的做法是只检索 id
和 title
,整个 collection,所以搜索可以直接使用。
然后,as the items displayed on screen are in an array, I place a $watch on that array
。 $watch 的工作是获取数组中项目的完整详细信息(二次拉取),但当然只有在数组发生更改时才会这样做。
因此,在最坏的情况下,您只能提取 10 项的完整详细信息。
缓存结果以提高效率。它显示即时结果,因为 $watch 充当 pre-loader.
Am I better off initiating many small HTTP transactions or a few large ones?
我相信大宗交易,仅针对少数项目(可在屏幕上点击的项目)是非常有效的。
关于best practice
位:我想有很多方法可以实现你的目标;然而,the technique you are using works extremely well, as it retrieves only what is needed, and only just before it is needed
。
而且实现起来也很简单
此外,像你一样,我认为许多较小的拉动肯定比几个大拉动更好。但是,我被建议 去大拉 作为对这个问题的评论:Fetching subdocuments with angular $http
为了回答您关于搜索哪些关键字的问题,我建议:
progressive loading
另一种方法是使用 websockets 和 streaming loading
:Oboe.js 做得很好:
http://oboejs.com/examples