Я написал свой собственный класс PageStatePersister
на основе SessionPageStatePersister
, который записывает самые последние 10 Viewstate
сессий для общего диска. Я полагаю, что это масштабируется лучше, чем сохранение Viewstate
в сеансе, поскольку все веб-серверы имеют к нему доступ, им не придется иметь дело с истечением срока действия и использовать меньше памяти.
Когда пользователь закрывает браузер, он уведомляет сервер, а сервер удаляет те файлы, к которым не было доступа в течение двух часов. Пока все хорошо, но мне интересно, будет ли быстрее и эффективнее хранить Viewstate
в базе данных SQL-сервера.
- Каждый файл
ViewState
имеет в среднем 30 КБ.
- В настоящее время он просто читает скрытое поле, чтобы получить ключ Viewstate, получить прямой доступ к файлу и десериализацию. Там нет необходимости сортировать или искать.
- Каждый час будет около 2000 одновременных пользователей, а сохранение последних 20 сеансов Viewstate будет составлять около 20 тыс. Временных файлов просмотра в час.
- Он должен периодически перебирать файлы и удалять самый старый файл.
Что лучше в этом случае: система flatfile или база данных ?