Повышение производительности ProfileManager.GetAllProfiles при использовании SqlProfileProvider

Я использую SqlProfileProvider для хранения своих профилей пользователей в веб-приложении asp.net.

То, что я ищу, - это способ извлечения всех профилей пользователей (я бы предпочел API поиска, но его нет) с некоторой разумной производительностью.

Использование ProfileManager.GetAllProfiles снижает производительность моего приложения.

Я думал об использовании Sql Cache Dependency для объекта, который возвращается из этого метода, но у меня все равно будет очень медленный сайт каждый раз, когда кто-то обновляет профиль (что может происходить несколько раз в день).

У кого-нибудь есть предложения по улучшению производительности? Я ищу вещи по этим строкам:

  • Эффективное кеширование (необходимо перепроверять только различия)
  • Оптимизация вызова GetAllProfiles
  • Возможность искать профили, вместо того, чтобы извлекать их все и фильтровать позже

1 ответ

SqlProfileProvider не предоставляет простой способ поиска профилей, так как все данные профиля хранятся в одном столбце.

Вам следует подумать о создании собственного провайдера профилей или использовать что-то вроде провайдера профилей таблиц. Это сохраняет каждое свойство профиля в отдельном столбце базы данных, и вы можете легко создавать собственные запросы для поиска данных.

Другие вопросы по тегам