У меня есть сайт на asp.net и мне нужно хранить достаточно большие файлы, 2-4 файла каждый до 10 мб между postback'ами.
Сейчас я их храню в сесиях, но админ попросил поискать решение менее требовальное к количеству оперативки на сервере.
Какие есть минусы хранения 40 мб файлов в Viewstate ?
Отправляется ли viewstate в запросе с каждым постбеком, даже если она
там не используется?
Ответ
Viewstate отправляется при каждом запросе и еще шифруется. Хранить в нем такие большие файлы нельзя. Для ускорения работы сайтов есть практика отключения Viewstate совсем.
Если ваши файлы разделяются между всеми пользователями, то замените хранение в сессии на хранение в Cache
Так же можно воспользоваться сторонним кеш-сервисом (memcached, redis и тд).
Для экономии оперативной памяти вы можете хранить ваши временные файлы на диске между запросами. При небольшом объеме оперативки вам придется сделать выбор между производительностью (хранение в памяти любого кеш-сервиса) и загрузкой памяти (хранить на диске).
Если задача это позволяет, то можно попытаться переделать последовательность работы с файлами исключающую потребность в их хранении между запросами. Например, вначеле мы собираем информацию об обработке файлов от пользователя и только в конце применяем все алгоритмы к данным из файлов.
Комментариев нет:
Отправить комментарий