【问题标题】:Many small or one bigger POST request?许多小的或一个更大的 POST 请求?
【发布时间】:2017-06-25 08:20:07
【问题描述】:

当用户看到一篇文章时,我需要收集信息。用户将在一分钟内浏览 1-30 篇文章(如果用户只是滚动浏览所有看起来特定的东西,可能会更多)。我想知道哪种方式可以将我的服务器成本保持在最低水平:

  1. 在客户端 javascript 中,我将文章 ID 推送到一个数组中,并在有 30-60 个 ID 时将其发送到服务器。在服务器上,我遍历所有 id 并将它们插入数据库。

  2. 每当用户看到一篇文章时,我都会向服务器发送一个文章 ID。在某些情况下,这可能会在一分钟内导致超过 60 个请求。在服务器上,我将 id 插入数据库。

【问题讨论】:

  • http 请求在服务器之间的握手中具有很小的开销。每次您提出请求时,都会产生此开销。如果您有大量请求,则延迟可能开始变得明显。因此,这取决于 (a) 您需要应用程序的模块化程度(您是否需要仅发送 1 个 ID 的灵活性,或者批量更新是否足以满足当前和未来的需求 (b) 您对性能和带宽的关心程度. 另一个概念是准确性 - 如果您延迟到拥有 30 个 ID,如果用户只滚动 2 篇文章然后退出,则不会被记录。

标签: javascript node.js performance server


【解决方案1】:

在大多数情况下,总是需要权衡取舍。很多时候,最佳解决方案位于中间的某个位置。我觉得你应该支持两者并根据情况互换使用它们。请经历以下场景:

  • 您的最终用户会遇到带宽问题吗?如果是,则使用选项 2 或将文章数量减少到一定数量以便在较低带宽下也可以轻松获取它可能是有意义的。
  • 假设用户没有带宽问题,例如加载 30-60 篇文章不会占用用户太多时间,您可以选择选项 1 并继续使用此选项进行后续提取。
  • 很多时候,使用选项 1 进行初始提取然后再提取较少数量的文章是有意义的。
  • 关于服务器成本,如果用户全部阅读,一起发送 30-60 篇文章是有意义的。如果您觉得他不会全部阅读,请使用您应用的分析找到最佳数量,然后一次性发送这些数量的文章,前提是带宽对用户来说不是问题。

tl;博士;在您应该信任的数据中。使用您的直觉、现有的应用程序使用模式和用户的带宽可用性来做出明智的决定。此外,服务器成本并不是唯一的问题。我认为经验更重要。

【讨论】:

  • 也许应该补充一点,如果你使用一堆http请求,http2会带来一些严重的性能优势
猜你喜欢
  • 1970-01-01
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
  • 2018-02-24
  • 2015-12-28
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
相关资源
最近更新 更多