2010-09-07 3 views
1

Я в настоящее время разрабатываю средство просмотра изображений с использованием asp.net MVC. Сам просмотрщик изображений работает как charme, но я не доволен кэшированием.Кэширование стратегии для ASP.NET MVC/GeneratedImage

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

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

Thx заранее

+0

поэтому вы не ставите большие пальцы на жесткий диск, но генерируете их каждый раз на лету? и попытаться «сохранить» с кешированием? – Stefanvds

+0

В настоящее время я делаю большие пальцы на лету. Но они преходящие продукты.Поэтому я подумал, что было бы неплохо иметь некоторое кэширование на месте, что может доставить большие пальцы быстрее, чем я его создаю. На мой взгляд, «сохранение» на диске будет кешированием. GeneratedImage делает это - он сохраняет изображения на диск, но только с ограничением в 5 минут, что, я думаю, слишком короткое. Вот почему я искал лучший компонент, чтобы иметь интеллектуальный механизм кеширования на месте. Сохранение всех больших пальцев на диск не является вариантом из-за объема пространства, которое может быть использовано. – BitKFu

ответ

1

Отъезд Image Resizing Module от Нафанаил Джонса. Он делает миниатюру и настраивает кеширование всего в одном простом модуле. Это не бесплатно, но он очень прост в использовании и настройке, и он работает очень хорошо.

+0

Поскольку это всего лишь проект для обучения и лучшего понимания ASP.NET MVC, я не хочу тратить на это деньги;) – BitKFu

+0

Поскольку его единственный компонент, который все может сделать, что я думаю, я вознаграждаю 50 баллов тебе. – BitKFu

0

Да, ваше право. Недостаточно реализации кэширования.

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

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

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

EDIT:

Есть некоторые вопросы кэширования вывода обработчика ASHx.
После использует на стороне клиента кэширование How to use output caching on .ashx handler
Serverside кэширование Caching http handler .ashx output

+0

Проблема не в физическом создании эскизов. Это только кеширование. Есть ли другие ImageHandlers, такие как GeneratedImage, или, может быть, лучше кэшировать весь сайт? Есть ли для этого решения? В основном это то, что я ищу. – BitKFu

1

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

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

+0

Эта идея кажется интересной ... Итак, можете ли вы опубликовать код, как загрузить изображение на Amazon S3? На данный момент я понятия не имею, как это сделать. – BitKFu

+0

@BiKFu ищет что-то конкретное, получит его вам намного быстрее, чем если бы кто-то, кто отправил ответ, просмотрел их файлы и изменил его, чтобы было безопасно делиться ... btw, +1 к этому ответу – eglasius

0

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

Смежные вопросы