это мой сценарий: у меня есть приложение Laravel 6.x, и я использую FlySystemAzureBlobStorage пакет для хранения изображений в Azure Blob Storage. Затем я хочу использовать пакет InterventionImageCache для получения и кеширования изображений для более быстрой загрузки клиентов в разных размерах. Я уже сделал это таким образом:
public static function getImageResponseForApi($storageDiskName, $imagePath, $width = null, $height = null)
{
//check if the image exists on disk
$exists = empty($storageDiskName) ?
Storage::exists($imagePath) :
Storage::disk($storageDiskName)->exists($imagePath);
if ($exists) {
$image = empty($storageDiskName) ?
Storage::get($imagePath) :
Storage::disk($storageDiskName)->get($imagePath);
if (!empty($width) || !empty($height)) {
//use the image cache function to get the cached image if exists
$image = \Image::cache(function ($ima) use ($image, $width, $height) {
//check if height and with are higher than original or not
$ima->make($image)->resize($width, $height, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
});
});
}
$sizes = getimagesizefromstring($image);
$headers = [
'Content-Length' => strlen($image),
'Content-Type' => $sizes["mime"]
];
return \Response::make($image, 200, $headers);
} else {
return null;
}
}
При такой работе возникает проблема: я должен загрузить изображение из azure хранилища BLOB-объектов, прежде чем система сможет проверить, есть ли кэшированная версия с измененным размером он существует.
Пакет Azure, который я использую, не дает возможности получить пути к изображениям, поэтому я не могу найти другое решение моей проблемы.
Итак, есть ли способ добиться кэширования изображений без необходимости каждый раз загружать файл?