Open Closed

abp permissons slow #9823


User avatar
0
heshengli created

https://abp.io/support/questions/9767/The-abp-permission-cache-PermissionGrants-loads-very-slowly-during-the-first-login-but-very-quickly-during-the-second-login-When-the-permission-cache-is-manually-cleared-it-slows-down-again# 通过修改源码,添加耗时日志,发现权限在慢主要是这个函数 PermissionStore.SetCacheItemsAsync


30 Answer(s)
  • User Avatar
    0
    heshengli created

    [maliming] said:

    var permissions = (await PermissionDefinitionManager.GetPermissionsAsync()) 
                    .Where(x => notCacheKeys.Any(k => GetPermissionNameFormCacheKeyOrNull(k) == x.Name)).ToList(); 
    

    改为

    var names = notCacheKeys.Select(k => GetPermissionNameFormCacheKeyOrNull(k)).ToArray(); 
     
    var permissions = (await PermissionDefinitionManager.GetPermissionsAsync()) 
        .Where(x => names .Any(k => k == x.Name)).ToList(); 
    

    速度从6秒到几秒? 6969ms到92ms

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    好的, 我会在模块中修复它

  • User Avatar
    0
    heshengli created

    是否考虑添加OneTime.Run(),初始化全部用户角色权限,在权限多的情况下,Cache.SetManyAsync比较耗时 也可以添加Options开关

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    如果用户和角色太多, 这样会造成更卡顿的情况

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    我已经在framework中优化了这个方法

    参考: https://github.com/abpframework/abp/pull/23622

Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.0.0-preview. Updated on September 01, 2025, 08:37