У меня есть приложение Laravel, которое пользователи могут загружать изображения, я собираюсь использовать балансировщик нагрузки на производстве (2 веб-сервера), поэтому, насколько я понимаю, я должен хранить статический файл в отдельном хранилище.Я использую дроплет digitalocean для веб-сервера и пространство digitalocean для хранения изображений.
Проблема, с которой я сталкиваюсь, заключается в том, что отклик веб-сервера очень медленный, это занимает около 5 секунд, поскольку необходимо проверить, доступен ли файл вПробел или нет для каждого ответа.
Например, чтобы получить ответ ниже, я должен проверить, существует ли логотип в пути или нет.
{
"_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)];
});
}
Я видел в документе сказано, что он использует HTTP для подключения пространства DO, а HTTP намного медленнее, чем традиционное блочное хранилище, он предназначен для больших файлов.
Что я могу сделать, чтобы улучшить производительность, если я должен использовать другой сервис?