Создавать миниатюрные изображения во время выполнения по запросу или предварительно создавать миниатюры на жестком диске? - PullRequest
1 голос
/ 30 августа 2010

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

Это сценарий:

1) в каждом заказе может быть не более 10 изображений. 2) изображения не нужно хранить после завершения заказа (максимальный срок составляет 2 недели). 3) потенциально может быть несколько тысяч активных заказов в любое время. 4) заказы с изображениями будут часто посещать клиенты.

IMO, предварительное создание миниатюр на жестком диске - лучшее решение, так как жесткий диск дешевле даже с RAID.

А как насчет скорости дискового ввода-вывода и ресурсов, необходимых для загрузки изображений? это займет больше ресурсов, чем генерировать эскизы в режиме реального времени?

Было бы очень полезно, если бы вы могли поделиться своим мнением.

Ответы [ 3 ]

1 голос
/ 30 августа 2010

Это зависит от вашей нагрузки.Если ресурс запрашивается несколько раз, имеет смысл его кешировать.

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

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

1 голос
/ 22 июня 2011

Я предлагаю комбинацию динамической генерации и дискового кеширования. Это предотвращает потерю свободного места от неиспользуемых изображений, но абсолютно не увеличивает накладные расходы для неоднократно запрашиваемых изображений. Кэширование SQL и mem не является хорошим выбором, так как требует слишком много оперативной памяти. IIS может обслуживать большие образы с диска, используя только 100 КБ ОЗУ.

При создании http://imageresizing.net, я обнаружил 29 ошибок при изменении размера изображения , и немногие из них очевидны. Я настоятельно рекомендую прочитать список, даже если это немного скучно. Вам понадобится HttpModule, чтобы можно было передавать кэшированные запросы в IIS.

Хотя - зачем изобретать велосипед? Библиотека ImageResizer широко используется и хорошо протестирована.

1 голос
/ 30 августа 2010

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

...