diff --git a/Emby.Server.Implementations/Library/UserDataManager.cs b/Emby.Server.Implementations/Library/UserDataManager.cs
index 72c8d7a9d2..0aa8833294 100644
--- a/Emby.Server.Implementations/Library/UserDataManager.cs
+++ b/Emby.Server.Implementations/Library/UserDataManager.cs
@@ -236,12 +236,20 @@ namespace Emby.Server.Implementations.Library
}
///
- public UserItemData? GetUserData(User user, BaseItem item)
+ public UserItemData GetUserData(User user, BaseItem item)
{
- return item.UserData?.Where(e => e.UserId.Equals(user.Id)).Select(Map).FirstOrDefault() ?? new UserItemData()
+ var cacheKey = GetCacheKey(user.InternalId, item.Id);
+ if (_cache.TryGet(cacheKey, out var cachedData))
{
- Key = item.GetUserDataKeys()[0],
- };
+ return cachedData;
+ }
+
+ var data = item.UserData?.Where(e => e.UserId.Equals(user.Id)).Select(Map).FirstOrDefault() ?? new UserItemData()
+ {
+ Key = item.GetUserDataKeys()[0],
+ };
+
+ return _cache.GetOrAdd(cacheKey, _ => data);
}
///