【问题标题】:Improve performance on ProfileManager.GetAllProfiles when using SqlProfileProvider使用 SqlProfileProvider 时提高 ProfileManager.GetAllProfiles 的性能
【发布时间】:2009-11-05 07:56:47
【问题描述】:

我正在使用 SqlProfileProvider 将我的用户配置文件存储在 asp.net Web 应用程序中。

我正在寻找一种获取所有用户配置文件的方法(我更喜欢搜索 API,但没有可用的 API),并具有一些合理的性能。

使用 ProfileManager.GetAllProfiles 会降低我的应用程序的性能。

我正在考虑对从此方法返回的对象使用 Sql Cache Dependency,但每次有人更新配置文件时我的网站仍然会非常缓慢(每天可能发生几次)。

有人对提高性能有什么建议吗?我正在寻找这些方面的东西:

  • 高效缓存(仅应重新缓存差异)
  • 优化 GetAllProfiles 调用
  • 能够搜索配置文件,而不必全部获取并稍后过滤

【问题讨论】:

    标签: asp.net caching sqlprofileprovider


    【解决方案1】:

    sqlProfileProvider 不提供搜索配置文件的简单方法,因为所有配置文件数据都存储在单个列中。

    您应该考虑创建您的own profile provider 或使用Table Profile Provider 之类的东西。这会将每个配置文件属性存储在其自己的数据库列中,因此您可以轻松编写自定义查询来搜索数据。

    【讨论】:

    • 恐怕使用 Table Profile Provider 或推出我自己的提供程序(生产中的系统)为时已晚。 :(
    • 好吧,就性能而言,我认为您不会从 SqlProfileProvider 中获得太多乐趣。您可能会考虑进行自己的“缓存”——例如,一次性将配置文件数据迁移到您自己的表中,然后在有人更改配置文件数据时更新此表。尽管如果您这样做,那么无论如何您都不会实现自己的提供程序。您是否有不能更改提供者的原因?
    猜你喜欢
    • 1970-01-01
    • 2020-11-13
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多