如何在.NET Core上使用HttpWebRequest启用响应缓存

时间:2019-04-25 19:05:26

标签: caching .net-core httpwebrequest

这是this question的后续工作,涉及缓存对HttpWebRequest的响应。

我有一个WebApi服务器,该服务器返回带有Expires标头的JSON响应,该标头指示应将响应在客户端本地本地缓存多长时间。

我已经编写了一个.Net Standard 2.0库,其中包含用于启用默认RequestCachePolicy的代码,如下所示:

var policy = new RequestCachePolicy(RequestCacheLevel.Default);
HttpWebRequest.DefaultCachePolicy = policy;

var request = WebRequest.Create(url);
... etc, a typical HttpWebRequest exchange ...

我从.NET Framework 4.6.1控制台应用程序调用此.NET标准库。缓存可以像我期望的那样工作:

  • 如果我从控制台应用程序的相同或不同实例多次发出相同的请求,则第一个请求之后的所有请求都将从本地缓存中提供,直到到达Expires标头中的时间为止,之后再发出新请求发送到服务器。

这是我所期望的,因为根据this answer,它使用Microsoft.Win32.WinInetCache,后者使用WinInet函数进行缓存,因此数据被缓存在多个进程之间共享的缓存中(以及IE(如果我理解正确)。

如果我从.NET Core控制台应用程序中运行完全相同的.NET Standard 2.0代码,则不会进行缓存,并且每个请求都会到达服务器。

出于可移植性原因,.NET Core不使用Microsoft.Win32.WinInetCache是可以理解的。有没有一种方法可以让我在.NET Core中自动缓存响应(例如,通过使用配置注入缓存实现)。

我对Windows和Linux上的.NET Core 2.x解决方案感兴趣。理想情况下,缓存的数据将在多个进程之间共享,就像在.NET Framework上一样。

有人可以帮忙吗?

0 个答案:

没有答案