diff --git a/CryptoExchange.Net/Clients/RestApiClient.cs b/CryptoExchange.Net/Clients/RestApiClient.cs
index 44045c01..98c8c985 100644
--- a/CryptoExchange.Net/Clients/RestApiClient.cs
+++ b/CryptoExchange.Net/Clients/RestApiClient.cs
@@ -198,7 +198,7 @@ namespace CryptoExchange.Net.Clients
string? cacheKey = null;
if (ShouldCache(definition))
{
- cacheKey = definition.FullUrl + definition + uriParameters?.ToFormData();
+ cacheKey = GetCacheKey(definition, uriParameters);
_logger.CheckingCache(cacheKey);
var cachedValue = _cache.Get(cacheKey, ClientOptions.CachingMaxAge);
if (cachedValue != null)
@@ -800,6 +800,13 @@ namespace CryptoExchange.Net.Clients
&& definition.Method == HttpMethod.Get
&& !definition.PreventCaching;
+ ///
+ /// Produce a unique cache key for the request based on the request definition and parameters.
+ ///
+ protected virtual string GetCacheKey(RequestDefinition definition, Parameters? parameters)
+ {
+ return definition.FullUrl + definition + parameters?.ToFormData();
+ }
///
public virtual void SetOptions(UpdateOptions options)
@@ -889,6 +896,12 @@ namespace CryptoExchange.Net.Clients
ApiCredentials = (TApiCredentials?)options.ApiCredentials?.Copy() ?? ApiCredentials;
}
+
+ ///
+ protected override string GetCacheKey(RequestDefinition definition, Parameters? parameters)
+ {
+ return definition.FullUrl + definition + parameters?.ToFormData() + GetAuthenticationProvider()?.Key;
+ }
}
///