diff --git a/Sdl.Web.Common/packages.config b/Sdl.Web.Common/packages.config
index a966e523..8f502d5c 100644
--- a/Sdl.Web.Common/packages.config
+++ b/Sdl.Web.Common/packages.config
@@ -1,11 +1,11 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Sdl.Web.Mvc/packages.config b/Sdl.Web.Mvc/packages.config
index 6eca069a..0792b155 100644
--- a/Sdl.Web.Mvc/packages.config
+++ b/Sdl.Web.Mvc/packages.config
@@ -1,9 +1,9 @@
-
-
-
-
-
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Sdl.Web.Tridion/Providers/Caching/KeylockCacheProvider.cs b/Sdl.Web.Tridion/Providers/Caching/KeylockCacheProvider.cs
index a372cac1..48e45337 100644
--- a/Sdl.Web.Tridion/Providers/Caching/KeylockCacheProvider.cs
+++ b/Sdl.Web.Tridion/Providers/Caching/KeylockCacheProvider.cs
@@ -1,11 +1,10 @@
-using System;
-using System.Collections.Concurrent;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Threading;
+using AsyncKeyedLock;
using Sdl.Web.Common;
using Sdl.Web.Common.Interfaces;
using Sdl.Web.Delivery.Caching;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
namespace Sdl.Web.Tridion.Caching
{
@@ -26,35 +25,26 @@ namespace Sdl.Web.Tridion.Caching
///
public class KeylockCacheProvider : ICacheProvider
{
- private static readonly ConcurrentDictionary KeyLocks = new ConcurrentDictionary();
+ private static readonly AsyncKeyedLocker _asyncKeyedLocker = new AsyncKeyedLocker(o =>
+ {
+ o.PoolSize = 20;
+ o.PoolInitialFill = 1;
+ });
private readonly ICacheProvider