Size: a a a

Laravel для начинающих

2020 February 03

А

Алексей in Laravel для начинающих
а если размер картинок изменится, что делаешь будешь?)
источник

А

Алексей in Laravel для начинающих
все бд обновлять?))
источник

И

Игорь in Laravel для начинающих
именно!
источник

А

Алексей in Laravel для начинающих
ставишь размеры, генеришь картинки, кидаешь в папку кэша, чет такое
источник

Ф

Фаузер in Laravel для начинающих
Алексей
ставишь размеры, генеришь картинки, кидаешь в папку кэша, чет такое
Ссори, не совсем понимаю такую тактику. Условно если сбросил фул кэш, по новой все кидать ?
источник

Ф

Фаузер in Laravel для начинающих
В чем трабла хранить json в базе с названиями картинок и их размер ? На многих проектах такой метод встречал и сам им пользуюсь, ничего не затратно и работает как часы
источник

АЗ

Алихан Закиров in Laravel для начинающих
Фаузер
Ссори, не совсем понимаю такую тактику. Условно если сбросил фул кэш, по новой все кидать ?
Неа, ничего кидать не надо 🙂
В коде делаешь такую логику: если есть картинка в кеше - подсовываешь урл прям до кеша, и оно само там резолвится nginx’ом
Если нет кеша - подсовываешь ссылку на генерацию картинки и сбрасываешь ее в кеш сразу после того как отдал сгенерированную
источник

АЗ

Алихан Закиров in Laravel для начинающих
Таким образом у тебя получится «ленивый» прогрев кеша
источник

M

Max in Laravel для начинающих
Подскажите, как можно корректно загрузить отношения для всей коллекции, по смыслу вот так:

$products->specifications->load($subRelations);
источник

Ф

Фаузер in Laravel для начинающих
Вероятно кто-то из нас не понял вопрос)
источник

S

Sonic [Скупаю | Актуально всегда] in Laravel для начинающих
Алексей
а если размер картинок изменится, что делаешь будешь?)
Так по этому и отписал _small _large
источник

А

Алексей in Laravel для начинающих
Фаузер
В чем трабла хранить json в базе с названиями картинок и их размер ? На многих проектах такой метод встречал и сам им пользуюсь, ничего не затратно и работает как часы
если размер завтра поменяешь?
источник

А

Алексей in Laravel для начинающих
да и для чего хранить?
источник

Ф

Фаузер in Laravel для начинающих
Так может уточнить задачу для начала ?)
Речь идет о картинке, которую (возможно) подгружают единожды под разные размеры, в чем собственно проблема загрузить их по папкам как предложил Sonic, и сохранять json с их именами и префиксами ?) или просто фул имя + префикс с папкой
источник

Ф

Фаузер in Laravel для начинающих
Если он работает с этой картинкой не 1 раз, то стоит вопрос совсем уже в другом
источник

АЗ

Алихан Закиров in Laravel для начинающих
Зачем тебе хранить префиксы?
источник

И

Игорь in Laravel для начинающих
Sonic [Скупаю | Актуально всегда]
Может как имя файла и 4 поля для разных размеров. Потом вызывать по имени + размеру: filename_250x320.png или по типу filename_large, filename_small
В целом есть такой способ.

придумываешь случайное имя файла при сохранении, например a7bc4fed72ds.jpg

и кладешь его в папку для хранения изображений, но при этом берешь, допустим первые два символа от имени файла и как папку их делаешь, то есть в данном примере:
a7/a7bc4fed72ds.jpg

Таким образом у тебя файлы лягут равномерно по разным папкам.

Но! Ты сохранишь это все в папку original, что иметь доступ к оиргинальному изображению (аватара, допустим):

storage/public/avatars/original/a7/a7bc4fed72ds.jpg


Дальше твой код должен научится генерировать разные размеры аватарок или других изображений с заданным размером и помещать их в кэш.

То есть если в коде, ты запросишь аватар пользователя, например 100x150, то где-то там внутри вызовешь метод $user->getAvatar(100,150) и он тебе должен вернуть путь к этому файлу (не забудь про симлинк).
Проверит кэш - и вернет из кэша, если он есть, иначе вернет файл нужного размера (можешь еще обратить внимание на метод fit() от популярного расширения для работы с изображениями)

Но! чтобы случайно не положить твой сервер - гдето внутри заранее определи какие размеры изображений будут использоватся на твоем сайте и сверяйся с этим списком, иначе не выдавай ничего

Все новые сгенерированные картинки я кладу по тому же принципу, но уже в папку с нужным разрешением, например:

storage/public/avatars/100x150/a7/a7bc4fed72ds.jpg

В случае, если какой-то размер изображения перестал быть нужным - то сразу целиком сносишь эту папку со всеми изображениями и все

Даже можешь все снести папки с размерами, они легко восстановятся, когда будут запрошены (из оригиналов)
источник

Ф

Фаузер in Laravel для начинающих
Алихан Закиров
Зачем тебе хранить префиксы?
Я не предлагаю их хранить по факту, я говорю о возможной реализации.  Он может добавлять префикс в выводе, как удобно. Все зависит от того, как он это делает
источник

АЗ

Алихан Закиров in Laravel для начинающих
Делаешь урл вида /resize/path/to/image_sizeX_sizeY_resizeType.jpg

В коде где нужно отобразить картинку подставляешь нужный урл
источник

АЗ

Алихан Закиров in Laravel для начинающих
И там либо урл до кеша, либо до ресайзера
источник