【发布时间】:2017-12-08 13:10:13
【问题描述】:
我正在尝试启用 System.Net.HttpClient 的客户端缓存。我在http://localhost:83/api/test 有一个端点,响应时间为 1 秒,并将缓存标头发回。
如果我有这个代码
static async Task MainAsync()
{
var client = new HttpClient(new WebRequestHandler { CachePolicy = new HttpRequestCachePolicy() }) { BaseAddress = new Uri("http://localhost:83/api/") };
for (int i = 0; i < 20; i++)
{
var response = await client.GetAsync("test");
var res = await response.Content.ReadAsStringAsync();
Console.WriteLine(res);
}
}
执行需要一秒钟。
如果我将相同的代码放入 api 控制器中
static HttpClient client = new HttpClient(new WebRequestHandler {CachePolicy = new HttpRequestCachePolicy() }) { BaseAddress = new Uri("http://localhost:83/api/") };
public async Task<string> Get()
{
for (int i = 0; i < 20; i++)
{
var response = await client.GetAsync("test");
var res = await response.Content.ReadAsStringAsync();
}
return "ok";
}
在 IIS 中托管它需要 20 秒才能响应。
我需要做什么才能从服务器应用程序启用客户端缓存?
【问题讨论】:
标签: .net caching asp.net-web-api dotnet-httpclient