传输文件花费的时间太长

fnx2tebb  于 2022-09-20  发布在  其他
关注(0)|答案(1)|浏览(207)

我在nginx和apache服务器上有一个空API的laravel代码。现在的问题是,如果我尝试处理不同的文件,API会花费很多时间,而如果我尝试处理空白数据,API会快速响应。

案例一:我用空请求调用接口,该时间响应时间仅为228ms。

案例2:我用一个5MB的文件请求调用了API,然后文件传输花费了太多时间。这就是为什么响应时间会太长,也就是15.58秒

那么,我们如何才能减少在APACHE或nginx服务器中的传输开始时间,是否有任何服务器配置或任何其他我遗漏的东西?

当我在谷歌上搜索时,它说让你的所有版本保持最新,并使用php-fpm,但当我在我的服务器上配置php-fpm和http2协议时,我注意到这需要比上面更多的时间。所有服务器版本都是当前版本的最新版本。

14ifxucb

14ifxucb1#

这更多地是因为一个request没有要处理的内容,所以response将被提示,而另一个request需要实际处理,因此response将花费服务器处理request的内容所需的时间。

根据文件的大小和您的服务器配置,您可能会达到一个限制,从而导致timeout响应。

你遇到的问题的一个解决方案是分块上传文件。有几个包可用,这样您就不必自己编写该功能,Pionl Laravel Chunk Upload就是这样一个包的例子。

另一种解决方案是将文件处理卸载到队列。

更新

当我在谷歌上搜索区块时,它不是像5-10MB这样的小文件的最佳解决方案。对于像50-100 MB这样的大文件来说,这是最好的解决方案。那么,有没有任何服务器端分块配置或任何其他东西,或者我可以使用这个库来分块一个小文件?根据图书馆的文件,这是一个网络图书馆。如果我的API是从Android和iOS应用程序调用的,我应该使用什么?

诚然,分块可能不是较小文件的最佳解决方案,但它值得了解。我的建议是使用一些客户端逻辑来确定是否需要以块形式发送文件。在服务器端,使用队列在后台处理文件上传,允许请求继续处理,而不等待上传,并及时将响应发送回客户端(iOS/Android APP)。

相关问题