Генерация изображений на лету в PHP - PullRequest
1 голос
/ 09 января 2010

Я разрабатываю скрипт, который позволит людям создавать баннер для использования. Это настраиваемо. В процессе настройки я хотел бы иметь возможность перезагрузить баннер на месте. Чтобы они могли видеть изменения. Как только они создадут баннер и полностью закончат с ним, я дам им ссылку для использования. Эта ссылка будет кэшированной версией баннера и будет повторяться очень часто. Есть ли способ, которым я могу предотвратить злоупотребление генерацией на месте, чтобы предотвратить чрезмерную нагрузку на сервер? Есть ли способ, которым я могу сделать так, чтобы только мой JavaScript мог восстановить его?

Ответы [ 4 ]

1 голос
/ 09 января 2010

Комплексное ведение журнала и отслеживание сеансов помогут с этой проблемой. Вы можете использовать переменную сеанса, чтобы отслеживать использование баннеров для каждого пользователя. Подкрепите это регистрацией активности, поступающей с каждого IP-адреса. Запретить чрезмерные запросы от пользователей с интенсивным использованием и IP-адресов.

Я мог бы предположить, что уже могут существовать программные и аппаратные средства для управления использованием ресурсов по IP, которые вы могли бы вставить без специального кодирования для своего приложения. Я бы попробовал задать этот вопрос и на ServerFault .

1 голос
/ 09 января 2010

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

1 голос
/ 09 января 2010

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

0 голосов
/ 25 декабря 2012

Подобные вещи в значительной степени являются одной из причин, по которой мы имеем <canvas>.

Используя тег <canvas>, вы можете выполнять манипуляции с изображениями на лету, вообще не создавая нагрузки на сервер (фактически сервер совершенно не знает об этой манипуляции с изображениями). Затем, когда все будет готово, вы можете получить необработанные данные изображения с холста и поместить их в тег <img>, или отправить их на сервер, или что-нибудь еще, что вы можете сделать с изображениями.

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

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