public override async Task ExecuteAsync(IRequest req, IResponse res, object requestDto)
{
if (req.Verb != HttpMethods.Get && req.Verb != HttpMethods.Head)
{
return;
}
if (req.IsInProcessRequest())
{
return;
}
var feature = HostContext.GetPlugin <HttpCacheFeature>();
if (feature == null)
{
throw new NotSupportedException(ErrorMessages.CacheFeatureMustBeEnabled.LocalizeFmt(req, "[CacheResponse]"));
}
if (feature.DisableCaching)
{
return;
}
var keyBase = "res:" + req.RawUrl;
var keySuffix = MimeTypes.GetExtension(req.ResponseContentType);
var modifiers = "";
if (req.ResponseContentType == MimeTypes.Json)
{
string jsonp = req.GetJsonpCallback();
if (jsonp != null)
{
modifiers = "jsonp:" + jsonp.SafeVarName();
}
}
if (VaryByUser)
{
modifiers += (modifiers.Length > 0 ? "+" : "") + "user:" + req.GetSessionId();
}
if (VaryByRoles is { Length : > 0 })