2017-02-17 3 views
0

Я читал об изменении размера изображений на лету, используя некоторые скрипты php с переписыванием URL-адресов (/img/500x500/image-name.jpg), но много люди говорят, что это плохая практика, так как это ОЗУ и процессор потребляет (1 Мб изображения использует около 3 МБ ОЗУ). Поэтому я думал, что просто создам эти изображения один раз, а затем сохраню их в папке с кешем, таким образом, я могу сохранить исходный img, а также измененные в этой папке.Изменение размера и кеш-изображений на лету vs сбережения разных размеров на сервере

В настоящее время я сохраняю 3 разных размера на сервере при загрузке изображения (100x100, 200x200, 500x500). Недавно я использовал для отображения некоторых изображений в 500x500, но теперь я немного изменил дизайн, чтобы отображать эти изображения всего в 300x300, поэтому я теперь застрял в больших изображениях, которые могут немного замедлить загрузку страницы!

Так что я собираюсь сделать это, чтобы сохранить исходное изображение (1500x1500), и когда он будет просматриваться в первый раз, я создам соответствующие эскизы и сохраню их в папке на сервере. Таким образом, если я когда-либо изменю дизайн снова, я могу просто удалить папку с кешем изображения, чтобы создать новые миниатюры с новыми размерами ...

У меня все еще нет кодов, поскольку сайт все еще разрабатывается и я просто пытаюсь предвидеть эти факты. это веб-сайт электронной коммерции

Как вы думаете, это мудрый способ справиться с изображениями?

Я использую php7, Nginx, Laravel 5, а также услуги CDN (maxCDN)

Заранее спасибо

+0

Вообще, да, вы хотите сохранить копию генерируемый изображение сома (локальный кеш, CDN, ведро S3 и т. д.), поэтому вам не нужно выполнять сложную вычислительную задачу создания нового изображения каждый раз, когда вы хотите его отобразить. Как вы реализуете специфику, зависит от вас. Этот вопрос слишком общий, чтобы отвечать в его нынешнем формате. Если у вас есть конкретные вопросы о реализации (с примерами кода, который вы пробовали), тогда опубликуйте его здесь, и мы можем помочь с более подробными ответами. –

+0

@ArmanH Я снова читаю ваше сообщение. Одна вещь возникает из-за моего любопытства. Вы сказали «сохранить копию сгенерированных изображений в CDN», можно ли сохранять изображения только в CDN, а не на нашем сервере? – Websphere

+0

Конечно, проверьте [Flysystem] (https://flysystem.thephpleague.com/), который абстрагирует взаимодействие с поставщиками облачных/CDN (push, pull, delete, replace files и т. Д.) И позволяет вам обращаться с ними так, как если бы они были локальные диски. В идеале, однако, вы хотите сгенерировать изображение на локальном сервере, вставить его в облако, проверить, что передача выполнена успешно, а затем удалить локальную копию. –

ответ

1

Я делаю это для эскизов ... довольно легко с помощью библиотеки Intervention изображения ... Я имею в виду, просто ... http://image.intervention.io/

// open an image file 
$img = Image::make('public/foo.jpg'); 

// now you are able to resize the instance 
$img->resize(320, 240); 

// finally we save the image as a new file 
$img->save('public/bar.jpg'); 

Вот ... и да, изменение размеров на лету это плохая идея ...

+0

спасибо за ссылку! Вы говорите, что изменение размера на лету - плохая идея, но это также плохо, если вы делаете это только один раз за изображение, а затем сохраняете их в папке? – Websphere

+0

Я думаю, это было бы еще лучше ... поскольку вы только изменяете размеры изображений, которые будете использовать ... изображение, к которому никогда не обращались, никогда не будет изменяться таким образом. Просто не рекомендуется выполнять интенсивные операции процессора, когда вы обрабатываете запрос, он просто не масштабируется ... – Serge

+0

Что вы имеете в виду с интенсивными операциями ЦП? – Websphere