1
をキャッシュします。DelegatingHandler私はWEBAPIエンドポイント要求に対する応答をキャッシュしようとしているHttpResponseMessage
私はショート回路がパイプラインは、以前に生成された応答を再利用DelegatingHadlerを作成し、それが動作しません。
私は間違っていますか?または私はそれを正しく行うことができますか?
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