Я хочу создать несколько эскизов, используя библиотеку GD в php, что лучше создавать на лету или создавать физические? - PullRequest
1 голос
/ 27 мая 2010

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

Пожалуйста, учтите время и емкость, а также другие недостатки как для

Ответы [ 4 ]

3 голосов
/ 27 мая 2010

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

В любом случае, два основных варианта «когда создавать миниатюру»:

  1. При первом запросе. Это распространено, и это означает, что вы не генерируете миниатюры, которые никогда не используются, но это означает, что если у вас есть страница, заполненная миниатюрами первого раза, то сервер может перегружаться процессами PHP, генерирующими миниатюры.

    У меня была похожая проблема с Sorl + Django, когда я генерировал 100+ миниатюр на запрос для первых нескольких запросов после загрузки, и это в основном приводило к зависанию всего сервера в течение 20 минут. Не хорошо.

  2. Создание всех необходимых миниатюр при загрузке. Поскольку загрузка занимает много времени, вы сильно ломаете процесс обработки. Вы также можете извлечь его из процесса (т. Е. Использовать другой скрипт для обработки загрузок - возможно, даже не в PHP).

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

    Конечно, если дисковое пространство является проблемой, может быть аргумент для передачи миниатюры в CDN одновременно с обработкой.

Одна заметка, когда вы сохраняете миниатюры, довольно часто вы хотите изменить размер миниатюр в некоторой точке вниз по линии или, возможно, захотите два небольших варианта. Я считаю очень полезным сделать имена файлов очень конкретными, поэтому, если исходное изображение image.jpg, версия 200x200 будет image-200x200.jpg.

1 голос
/ 27 мая 2010

GD действительно ресурсоемкий, поэтому вы должны посмотреть, можете ли вы использовать ImageMagick (который также имеет более четкий синтаксис).

Вам определенно будет лучше кэшировать созданный эскиз после первого запуска (независимо от того, запускаете ли вы GD или ImageMagick) и обслуживать их из кэша. Если вы беспокоитесь о хранилище, время от времени удаляйте старые файлы из кэша.

1 голос
/ 27 мая 2010

Ни то, ни другое - не создавайте эскизы, пока они вам не понадобятся, - но сохраняйте созданные вами файлы.

Таким образом вы минимизируете объем необходимой работы и получаете самовосстанавливающуюся систему

С

0 голосов
/ 27 мая 2010

Всегда кэшировать (= записывать на диск) результаты операций GD. Они слишком дороги как с точки зрения процессорного времени, так и с памятью, чтобы делать это на ходу каждый раз. Это становится все более и более правдоподобным, чем больше у вас посетителей / посещений.

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