【问题标题】:Send/receive images in react with http发送/接收图像以响应 http
【发布时间】:2017-10-13 22:27:39
【问题描述】:

我们目前正在开发一个带有 React 前端(和 express 服务器)和 Java 后端的应用程序。该应用程序必须能够在前端和后端之间发送大量图像和视频。

到目前为止,我们已经使用 fetch (https://github.com/github/fetch) 将带有 formData 的图像从前端发送到后端,但由于 fetch 中未实现 formData,这不适用于发送其他方式(后端到前端)。我们能够以 blob 形式接收图像,但希望将信息与文件一起发送以减少 http 请求的数量。

对于我们应该使用什么来发送和接收大量图像和视频有什么建议吗?库或建议?

非常感谢!

【问题讨论】:

  • “地块”到底是多少?什么尺寸的?
  • 截至今天,每个用户一次最多可以发送 30 个文件,但我们正在构建一个库,我们需要能够发送更多文件。我们可以灵活处理文件大小,当前最大为 400MB,但如果出现问题,我们可以减小大小。

标签: javascript http reactjs express fetch


【解决方案1】:

我真的没有看到接收多个请求的数据有任何问题。一个请求发送图像的信息,带有图像的链接,然后浏览器发送另一个请求以获取图像。这是我见过的最常见的实现。

向服务器发送多个请求的感知开销并不是真正的问题。现代浏览器不会打开到服务器的多个 tcp 连接——它们会保持连接打开一段时间以允许多个请求,而不会产生打开新连接的开销。

所有现代网络浏览器都使用持久连接,包括 Google Chrome、Firefox、Internet Explorer(自 4.01 起)、Opera(自 4.0 起)和 Safari。 https://en.wikipedia.org/wiki/HTTP_persistent_connection

我假设您尝试使用“formData”向浏览器发送响应是在响应上使用content-type: multipart。这不是一种常见的做法,浏览器支持looks inconsistent。另外,Is there a de facto or established reason why multipart HTTP responses aren't generally supported in browsers?

不过,对您的用例真正有利的是采用 HTTP/2。 HTTP/2 为持久连接和同一连接的多个响应提供了更多功能。

有了新的二进制帧机制,HTTP/2 不再需要多个 TCP 连接来并行多路复用流;每个流被分成许多帧,这些帧可以被交错和优先处理。因此,所有 HTTP/2 连接都是持久的,每个源只需要一个连接,这提供了许多性能优势。 https://developers.google.com/web/fundamentals/performance/http2/

【讨论】:

  • 非常感谢!这确实回答了我们的问题。我们将阅读您的链接:-)
猜你喜欢
  • 1970-01-01
  • 2011-03-03
  • 1970-01-01
  • 2013-09-29
  • 2014-12-30
  • 1970-01-01
  • 2015-12-26
  • 2012-01-02
  • 2019-08-03
相关资源
最近更新 更多