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