Повышение производительности ProfileManager.GetAllProfiles при использовании SqlProfileProvider
Я использую SqlProfileProvider для хранения своих профилей пользователей в веб-приложении asp.net.
То, что я ищу, - это способ извлечения всех профилей пользователей (я бы предпочел API поиска, но его нет) с некоторой разумной производительностью.
Использование ProfileManager.GetAllProfiles снижает производительность моего приложения.
Я думал об использовании Sql Cache Dependency для объекта, который возвращается из этого метода, но у меня все равно будет очень медленный сайт каждый раз, когда кто-то обновляет профиль (что может происходить несколько раз в день).
У кого-нибудь есть предложения по улучшению производительности? Я ищу вещи по этим строкам:
- Эффективное кеширование (необходимо перепроверять только различия)
- Оптимизация вызова GetAllProfiles
- Возможность искать профили, вместо того, чтобы извлекать их все и фильтровать позже
1 ответ
SqlProfileProvider не предоставляет простой способ поиска профилей, так как все данные профиля хранятся в одном столбце.
Вам следует подумать о создании собственного провайдера профилей или использовать что-то вроде провайдера профилей таблиц. Это сохраняет каждое свойство профиля в отдельном столбце базы данных, и вы можете легко создавать собственные запросы для поиска данных.