diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
index ee951983c..a2a2bb104 100644
--- a/.github/workflows/docker.yml
+++ b/.github/workflows/docker.yml
@@ -30,13 +30,13 @@ jobs:
         id: getversion
       - name: Push to GitHub Packages - Nightly
         if: ${{ github.ref == 'refs/heads/vnext' }}
-        uses: docker/build-push-action@v6.7.0
+        uses: docker/build-push-action@v6.9.0
         with:
           push: true
           tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:nightly
       - name: Push to GitHub Packages - Release
         if: ${{ github.ref == 'refs/heads/master' }}
-        uses: docker/build-push-action@v6.7.0
+        uses: docker/build-push-action@v6.9.0
         with:
           push: true
           tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest,${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.getversion.outputs.version }}
diff --git a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj
index a9a464704..3be21caf6 100644
--- a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj
+++ b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj
@@ -9,7 +9,7 @@
     enable
     hidi
     ./../../artifacts
-    1.4.10
+    1.4.11
     OpenAPI.NET CLI tool for slicing OpenAPI documents
     true
     
@@ -29,8 +29,8 @@
 
   
     
-    
-    
+    
+    
     
     
     
@@ -38,14 +38,14 @@
       all
     
     
-    
-    
+    
+    
     
     
     
-    
+    
   
 
   
diff --git a/src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj b/src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj
index fd77f3566..68204d9c9 100644
--- a/src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj
+++ b/src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj
@@ -31,7 +31,7 @@
         
 
         
-        
+        
     
 
     
diff --git a/src/Microsoft.OpenApi.Workbench/Microsoft.OpenApi.Workbench.csproj b/src/Microsoft.OpenApi.Workbench/Microsoft.OpenApi.Workbench.csproj
index 5545dc84f..3ea08878d 100644
--- a/src/Microsoft.OpenApi.Workbench/Microsoft.OpenApi.Workbench.csproj
+++ b/src/Microsoft.OpenApi.Workbench/Microsoft.OpenApi.Workbench.csproj
@@ -12,7 +12,7 @@
       runtime; build; native; contentfiles; analyzers; buildtransitive
       all
     
-    
+    
     
     
   
diff --git a/src/Microsoft.OpenApi/Extensions/StringExtensions.cs b/src/Microsoft.OpenApi/Extensions/StringExtensions.cs
index 541523df5..00c26575e 100644
--- a/src/Microsoft.OpenApi/Extensions/StringExtensions.cs
+++ b/src/Microsoft.OpenApi/Extensions/StringExtensions.cs
@@ -1,7 +1,7 @@
 // Copyright (c) Microsoft Corporation. All rights reserved.
 // Licensed under the MIT license.
-
 using System;
+using System.Collections.Concurrent;
 using System.Diagnostics.CodeAnalysis;
 using System.Reflection;
 using Microsoft.OpenApi.Attributes;
@@ -13,6 +13,8 @@ namespace Microsoft.OpenApi.Extensions
     /// 
     public static class StringExtensions
     {
+        private static readonly ConcurrentDictionary> EnumDisplayCache = new();
+
         /// 
         /// Gets the enum value based on the given enum type and display name.
         /// 
@@ -21,22 +23,28 @@ public static class StringExtensions
         {
             var type = typeof(T);
             if (!type.IsEnum)
-            {
                 return default;
-            }
+
+            var displayMap = EnumDisplayCache.GetOrAdd(type, _ => new ConcurrentDictionary(StringComparer.OrdinalIgnoreCase));
+
+            if (displayMap.TryGetValue(displayName, out var cachedValue))
+                return (T)cachedValue;
+
 
             foreach (var field in type.GetFields(BindingFlags.Public | BindingFlags.Static))
             {
-                var displayAttribute = (DisplayAttribute)field.GetCustomAttribute(typeof(DisplayAttribute));
-                if (displayAttribute != null && displayAttribute.Name == displayName)
+                var displayAttribute = field.GetCustomAttribute();
+                if (displayAttribute != null && displayAttribute.Name.Equals(displayName, StringComparison.OrdinalIgnoreCase))
                 {
-                    return (T)field.GetValue(null);
+                    var enumValue = (T)field.GetValue(null);
+                    displayMap.TryAdd(displayName, enumValue);
+                    return enumValue;
                 }
             }
 
             return default;
         }
         internal static string ToFirstCharacterLowerCase(this string input)
-        => string.IsNullOrEmpty(input) ? string.Empty : char.ToLowerInvariant(input[0]) + input.Substring(1);
+            => string.IsNullOrEmpty(input) ? string.Empty : char.ToLowerInvariant(input[0]) + input.Substring(1);
     }
 }
diff --git a/src/Microsoft.OpenApi/Microsoft.OpenApi.csproj b/src/Microsoft.OpenApi/Microsoft.OpenApi.csproj
index bbcd17c71..6ddac0ec9 100644
--- a/src/Microsoft.OpenApi/Microsoft.OpenApi.csproj
+++ b/src/Microsoft.OpenApi/Microsoft.OpenApi.csproj
@@ -22,7 +22,7 @@
         true
     
             
-        
+        
     
 
     
diff --git a/test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj b/test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj
index dbc372c99..aff884556 100644
--- a/test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj
+++ b/test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj
@@ -24,7 +24,7 @@
         
         
         
-        
+