Сохранять изображения нескольких размеров или просто сохранять основное и изменять размер?

#c# #asp.net-mvc-3 #content-management-system #storage

#c# #asp.net-mvc-3 #система управления контентом #Хранение

Вопрос:

Я работаю над CMS и пытаюсь выяснить обычную практику выполнения запроса изображения в стиле REST. У меня есть три размера: маленький, средний и полный. Я думаю сохранить только полное изображение и написать функцию, которая будет изменять размер при каждом запросе страницы. Это приводит к очевидным затратам процессора. С другой стороны, я мог бы сохранить все три размера и вычислять только при загрузке, это, похоже, пустая трата места.

Моя среда — это интрасеть, поэтому относительно низкие запросы и большое количество сохраненных изображений. Мысли?

Примечание: Я понимаю, что мне не нужно слишком беспокоиться, поскольку это интрасеть, и любое решение будет работать, просто интересно, какое из них было бы предпочтительнее для ознакомления.

Ответ №1:

Другой вариант — поддерживать кэш изображений с измененными размерами. Предоставьте те, которые доступны. Создайте новые, если они недоступны. Удалите изображения, которые некоторое время не запрашивались.

Это будет компромисс между проблемами процессора и хранилища.

Комментарии:

1. Мне это нравится. Это работает хорошо, поскольку большинство изображений больше никогда не отображаются после первых 3 недель их работы. Спасибо!

Ответ №2:

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

Ответ №3:

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

Если вы хотите пофантазировать, вы могли бы настроить кэш MRU (самого последнего используемого) из n наиболее часто запрашиваемых изображений с измененным размером, но опять же, при малом количестве запросов это, вероятно, было бы излишеством — но все равно это мог бы быть интересный проект ! 😉

Ответ №4:

Одним из ключевых моментов REST и использования по сравнению со стандартными HTTP-глаголами является то, что он поддерживает кэширование; Я думаю, это поддержало бы намерение выполнять динамическое изменение размера. Однако на самом деле это вопрос компромисса между объемом памяти и вычислением во время запроса.

Ответ №5:

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

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

Ответ №6:

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