Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript node.js是图像代理和操作任务的理想选择吗?_Javascript_Node.js_Image Processing_Proxy - Fatal编程技术网

Javascript node.js是图像代理和操作任务的理想选择吗?

Javascript node.js是图像代理和操作任务的理想选择吗?,javascript,node.js,image-processing,proxy,Javascript,Node.js,Image Processing,Proxy,我有一个任务,每个图像都可以从网上的多个来源检索。我使用node作为代理服务,这样当接收到映像请求时,node会在内部命中映像可用的3-4个源,并返回第一个响应的源 我还想支持图像处理任务,如裁剪、调整大小、旋转等。为此,我使用了imagemagick。但我知道,图像处理是一项繁重的任务,会阻碍这一进程。即使我将CDN放在节点服务器前面,它仍然会在大量负载下崩溃 这项任务的最佳安排是什么。节点中是否有可能的解决方法?我是否应该将所有代码切换到其他技术?或者我应该将代理部分保留在节点中,将操作部分

我有一个任务,每个图像都可以从网上的多个来源检索。我使用node作为代理服务,这样当接收到映像请求时,node会在内部命中映像可用的3-4个源,并返回第一个响应的源

我还想支持图像处理任务,如裁剪、调整大小、旋转等。为此,我使用了imagemagick。但我知道,图像处理是一项繁重的任务,会阻碍这一进程。即使我将CDN放在节点服务器前面,它仍然会在大量负载下崩溃


这项任务的最佳安排是什么。节点中是否有可能的解决方法?我是否应该将所有代码切换到其他技术?或者我应该将代理部分保留在节点中,将操作部分保留在其他地方吗

在Node.js中执行请求和响应,同时启动单独的ImageMagick进程以使用操作图像。这样,当ImageMagick处理图像时,Node.js就不会被阻塞。

Node.js应该能够处理它

而且,即使图像处理是一项繁重的任务,您也不必阻止线程使其工作。使用异步框架将图像传递给imagemagick,让它通过回调通知node.js,然后返回到客户端


此外,如果您需要大量负载,可以使用nginx作为负载平衡器,让node.js服务器在多个节点上运行。

不要错过node.js模块的图像处理性能-

比较示例:

  Found images:
  4198671-green-sea-view.jpg
  Beautiful-Sea-Pier-In-Chile-Hdr-Wide-Desktop-Background-Wallpapers-Beautiful-Sea-Wallpaper-.jpg
  Bluestone-valley-view_-_Virginia_-_ForestWander.jpg
Found modules: canvas.js, gm-imagemagic.js, gm.js, lwip.js
== START ==
canvas.js : 4.001 img/sec; done in 7.498536 sec; minCPUidle: 96%; minFreeMem: 283Mb; MaxLoadAvg: 1.48
gm-imagemagic.js : 1.206 img/sec; done in 24.88003 sec; minCPUidle: 96%; minFreeMem: 456Mb; MaxLoadAvg: 1.59
gm.js : 1.536 img/sec; done in 19.528429 sec; minCPUidle: 96%; minFreeMem: 490Mb; MaxLoadAvg: 1.84
lwip.js : 0.406 img/sec; done in 73.891623 sec; minCPUidle: 96%; minFreeMem: 157Mb; MaxLoadAvg: 1.56
== DONE ==
在本例中,您可以看到,相对于图像处理速度而言,canvas模块是最好的(在作者的本地计算机上每秒约4个图像) 我希望这将有助于您决定是否需要代理