简短回答:(1)保持连接活跃不是个坏主意,但会带来一些麻烦。建议先尝试不重用连接。 (2)上传应该通过API进行,但可能有优化API到CDN传输的方法。
长回答:
1. 总体来说,保持连接活跃并不是个坏主意。就性能而言,重用连接可以提高网站性能。
然而,这会带来一些麻烦。你需要确保连接处于打开状态,如果连接断开需要重新创建连接。有时SFTP客户端可能会认为连接仍然有效,但实际上并非如此,需要重试。另外,当一个请求正在使用连接时,其他请求不能使用该连接。你可能需要维护一个连接池,以便同时处理多个请求。
如果你幸运的话,SFTP客户端库已经处理了这个问题(查看是否支持连接池)。如果没有,你就需要自己动手解决。
我的建议是:先尝试不重用连接,看看网站的性能是否可接受。如果性能不佳,则考虑重用连接。但要小心。
2. 通常情况下,让HTTP请求通过API更好,原因如下:
- 出于安全考虑,你希望将CDN上传凭据存储在API上,而不是在客户端(网站或移动应用程序)上。你应该假设网站的代码可以被看到(通过查看源代码),人们一般可以反编译或逆向工程移动应用程序,他们将能够在代码中看到你的凭据。
- 这样可以隐藏实现细节,因此在未来更改时,不需要更改客户端代码。
@tarun-lalwani的建议实际上是个好主意——使用S3存储图像,并使用lambda触发器将其上传到CDN。有一些Node.js库可以允许你通过API的HTTP请求将图像直接流式传输到S3存储桶中。这意味着你不必担心机器实例上的磁盘空间问题。
关于你对@tarun-lalwani评论的问题,一种方法是使用S3图像URL路径,直到lambda函数完成。如果正确授权,S3也可以提供图像服务。然后,在lambda函数完成上传到CDN之后,只需替换数据库中的图像路径。