我在带有nginx&apache服务器。现在的问题是,如果我尝试使用不同的文件,API会花费大量时间,而如果我尝试空白数据,API会快速响应。
案例1:我用一个空白请求调用了API,这个时间响应时间只有228ms。
案例2:我调用了API,请求了5MB的文件,然后文件传输花费了太多时间。这就是为什么响应时间太长,即15.58s。
那么,我们如何减少apache或nginx服务器中的传输开始时间,是否有任何服务器配置或我错过的任何其他事情?
当我在谷歌上搜索时,它说保持你的所有版本都是最新的,并使用php-fpm,但当我在服务器上配置php-fpm和http2协议时,我注意到它比上面花了更多的时间。所有服务器版本都是当前版本的最新版本。
这更多地与以下事实有关:一个request
没有任何要处理的内容,因此response
将被提示,而另一个request
需要实际处理,所以response
将与服务器处理request
的内容所需的时间一样长。
根据文件的大小和您的服务器配置,您可能会达到一个限制,这将导致timeout
响应。
解决您遇到的问题的方法是大块上传文件。有一些软件包可以使用,这样你就不必自己编写该功能,Pionel Laravel Chunk Upload就是这样一个软件包的例子。
另一种解决方案是将文件处理卸载到队列。
更新
当我在谷歌上搜索关于分块的内容时,这不是最好的解决方案小文件,如5-10 MB。对于像这样的大文件来说,这是最好的解决方案50-100毫巴。那么,是否有任何服务器端分块配置或其他事情,或者我可以使用这个库来分块一个小文件吗?根据图书馆文件,这是一个网络图书馆。我该怎么办如果我的API正在从Android和iOS应用程序调用,请使用?
的确,分块可能不是较小文件的最佳解决方案,但值得了解。我的建议是使用一些客户端逻辑来确定是否需要分块发送文件。在服务器上,使用队列在后台处理文件上传,允许请求在不等待上传的情况下继续处理,并及时将响应发送回客户端(iOS/Android应用程序(。