1
我试图缓存对webapi端点请求的响应。DelegatingHandler缓存HttpResponseMessage
我已经创建了一个DelegatingHadler,它将流水线重复使用先前生成的响应进行短路,但它不起作用。
我在做什么错?或者我如何正确地做到这一点?
这是我的DH:
public class StuffCache : DelegatingHandler
{
public const string URL_CACHED = @"/stuff-endpoint/items";
ObjectCache cache = MemoryCache.Default;
public StuffCache()
{
cache = MemoryCache.Default;
}
protected async override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
if (request.Method == HttpMethod.Get)
{
if (request.RequestUri.AbsolutePath.ToLower() == URL_CACHED)
{
HttpResponseMessage response = (HttpResponseMessage)cache["CachedItemName"];
if (response == null)
{
response = await base.SendAsync(request, cancellationToken);
cache.Add("CachedItemName", response, null);
}
return response;
}
}
return await base.SendAsync(request, cancellationToken);
}
}
缓存响应头? – Legends
整个响应,所有内容 –
是的,但您必须在缓存整个ResponseMessage之前添加缓存响应标题! – Legends