Стратегия кэширования для ASP.NET MVC / GeneratedImage - PullRequest
1 голос
/ 07 сентября 2010

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

Для объяснения: я использую GeneratedImage (http://aspnet.codeplex.com/releases/view/16449) для создания превью, но кэширование на стороне сервера ограничено только 5 минутами и не может быть изменено, насколько я знаю.

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

Спасибо заранее

Ответы [ 4 ]

1 голос
/ 12 сентября 2010

Я создаю какое-то похожее приложение, и я не думаю, что «кэширование» сгенерированного изображения (особенно, если оно не будет воссоздано в ближайшее время) - хорошая идея. Решение, которое мы приняли, состоит в том, чтобы загрузить изображение непосредственно в Amazon S3 и использовать его в качестве постоянного кэша.

Таким образом, все, что вам нужно сохранить, это новый URL, и вы получаете систему Cloudfront бесплатно, благодаря чему ваши изображения загружаются намного быстрее. В худшем случае, если вам нужно заново сгенерировать изображение, вы всегда можете удалить и заново создать объект на S3, поскольку это не очень дорогой процесс.

1 голос
/ 07 сентября 2010

Проверьте Модуль изменения размера изображения от Натанаэля Джонса. Это делает миниатюру и настраиваемое кэширование всего в одном простом модуле. Это не бесплатно, но очень удобно в использовании и настройке, и работает очень хорошо.

0 голосов
/ 15 сентября 2010

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

0 голосов
/ 07 сентября 2010

Да, ваше право. Реализация кеширования отсутствует.

Вы можете включить кэширование клиента и сервера. Но вы можете только установить тайм-аут клиента. Таймаут кэша сервера скрыт в приватных полях, классах и конструкторах.

ImageHandler имеет закрытое поле Реализация типа ImageHandlerInternal. Этот делает всю работу. Он использует реализацию IImageStore, что делает все кэширование на стороне сервера. IImageStore - это внутренний интерфейс Microsoft.Web. Нет способа реализовать собственное хранилище изображений. Обработчик является внутренним классом. Нет способа расширить это самостоятельно.

Жаль, что это полностью скрыто для пользователей. Ищите другой пример, выполняющий преобразования изображений! Существует множество примеров. http://www.google.com/search?q=image+thumbnail+c%23

EDIT:

Есть несколько вопросов по поводу кэширования вывода обработчика ashx.
Далее используется кэширование на стороне клиента Как использовать кэширование вывода в обработчике .ashx
Кэширование на стороне сервера Обработчик кэширования http. Вывод .ashx

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