Изменение размера изображения и кеширование вмешательства в Laravel

Когда я загружаю изображение (пример: user/1/user_profile_img.jpg), я хочу, чтобы изображение вмешательства создавало миниатюры нескольких размеров (100x100, 200x200, 400x400 и т. Д.), Эти размеры будут использоваться на разных страницах для улучшения оценки скорости страницы.

Следует ли хранить миниатюры разных размеров (100x100, 200x200, 400x400 и т. Д.) В специальной папке /cache/? как "/cache/user/1/user_profile_img-100x100.jpg"?

или я генерирую их при посещении страницы с помощью маршрута изменения размера кэша изображений вмешательства, например:

{{ route('photos/item/100x100/userprofile/user_profile_img.jpg') }}

в шаблоне blade.php?

Route::get('photos/item/{size}/{reference}/{photo}', 'ImgController@showImg');

Я видел, что в функции Intervention Image Cache есть параметр lifetime (optional):

$img = Image::cache(function($image) {
   $image->make('public/foo.jpg')->resize(300, 200)->greyscale();
}, 10, true);

Время жизни в минутах обратного вызова изображения в кеше.

Это для установки времени истечения срока действия кеша изображений?

Будет ли изображение автоматически удалено из папки /cache/?


person vasiline    schedule 18.10.2018    source источник


Ответы (1)


Должен ли я сохранять миниатюры разных размеров [...] или создавать их при посещении страницы [...]?

Изменение размера изображений может занять много времени по сравнению с продолжительностью типичного веб-запроса. Если для вас важна скорость, я определенно рекомендую сохранять версии с измененным размером при первоначальной загрузке изображения, либо во время самого запроса на загрузку, либо в задании, которое отправляется действием контроллера загрузки.

Если вы используете функции кэширования пакета Intervention, вы можете столкнуться с тем, что страницы часто нужно «подогревать», когда изображения с измененным размером не кэшировались в последнее время. Однако это будет зависеть от ваших шаблонов трафика, используемой реализации кеша и продолжительности кеширования. Если вы попробуете его, и он покажется вам подходящим для вашего варианта использования, то в его использовании нет ничего плохого.

person Travis Britz    schedule 18.10.2018
comment
Понятно, вы используете пакет образов вмешательства из laravel? - person vasiline; 18.10.2018
comment
Я использовал пакет Intervention в проектах Laravel, да - person Travis Britz; 19.10.2018