我有一个Laravel应用程序,用户可以上传图像,我将在生产环境中使用负载均衡器(2个Web服务器),因此据我了解,我必须将静态文件存储在单独的存储中。我将digitalocean液滴用于Web服务器和digitalocean空间来存储图像。
我面临的问题是Web服务器响应非常慢,大约需要5秒钟,因为它必须检查文件在DO空间中是否可用,而不是针对每个响应都可以。
例如,要获得以下答复,我必须检查路径中是否存在徽标。
{
"_id": "5c18fe1fbfaa6a5ae1141e08",
"title": "Test Even 2",
"organization_id": 2,
"logo": {
"360": "https://ezpwe.sgp1.digitaloceanspaces.com/events/5c18fe1fbfaa6a5ae1141e08/logo/360.png",
"480": "https://ezpwe.sgp1.digitaloceanspaces.com/events/5c18fe1fbfaa6a5ae1141e08/logo/480.png",
"720": "https://ezpwe.sgp1.digitaloceanspaces.com/events/5c18fe1fbfaa6a5ae1141e08/logo/720.png"
}
}
使用此代码
public function getLogoAttribute($value)
{
$path = "events/{$this->id}/logo";
$files = collect(Storage::files($path));
return $files->isEmpty() ? null : $files->mapWithKeys(function ($file) {
return [File::name($file) => Storage::url($file)];
});
}
我在document中看到,它使用HTTP连接DO空间,并且HTTP比传统的块存储要慢得多,它是为大型文件设计的。
我应该怎么做才能提高性能,我应该使用其他服务吗?