Создаем галерею изображений, которая читает файл с диска, создает эскизы "на лету" и представляет их пользователю. Это работает хорошо, за исключением того, что обработка занимает немного времени.
Затем я решил кэшировать обработанные изображения с помощью кэша приложений ASP.NET. Когда изображение обрабатывается, я добавляю поток байта [] в кеш. Насколько я знаю, это сохраняется в системной памяти. И это работает отлично, загрузка страницы происходит намного быстрее.
Мой вопрос в том, есть ли тысячи изображений, которые будут кэшироваться в кэш приложения, повлияет ли это на производительность сервера?
Существуют ли другие способы улучшения кэширования изображений?
По умолчанию Application Cache хранит данные на сервере; в зависимости от шаблона навигации на вашем веб-сайте, возможно, вы не получите слишком много кеш-запросов.
Вы можете предварительно обработать все изображения для создания своих эскизов сразу и сохранить их с исходным изображением. Таким образом, вам не нужно иметь дело с этим уровнем кэша и, вероятно, не займет слишком много места на диске.
Это зависит от того, сколько у вас изображений и памяти на вашем сервере. Мое предпочтение было бы записать миниатюры на диск и не помещать их в кэш памяти. Предположительно, вы запускаете сайт с диска с поддержкой RAID, поэтому скорость чтения будет быстрой, а IIS будет оптимизирован для чтения дисков.
Да, вы можете определенно повлиять на производительность веб-сервера, добавив слишком много вещей в кеш.
Одна из причин, по которой Кэш был добавлен в ASP.Net, заключался в том, чтобы добавить свои функции для очистки самых старых/наименее используемых элементов из кеша, если память сервера начнет увеличиваться. Если вы кешируете элементы в объекте Application, очистка не будет, и сервер может в конечном итоге исчерпать память. Использование объекта Cache поможет вам избежать этого.
Объект Cache также позволяет вам устанавливать различные правила об истечении срока действия. Так, например, вы можете установить ограничение времени на то, как долго эти изображения сохраняются в кеше.