ASP Net Web API 2响应缓存(服务器端)

时间:2019-05-08 11:39:16

标签: c# caching asp.net-web-api server http-caching

是否可以在服务器端缓存一次产生的响应,然后响应相同的请求重新传递它? 让我解释: 我的最终结果大约需要5秒钟才能生成响应-包括进入数据库并获取数据,对其进行处理,对其执行一些计算,确定并压缩响应-整个过程需要5秒钟。 第一次完成此操作后,我希望结果可用于来自所有用户的所有请求。 在我的视图客户端缓存中,当您将结果缓存在客户端上并且完全不打服务器时,或者当您打服务器但未更改304而不是数据时,这是不够的。 我想要的是打断服务器,如果任何人都已经调用过这个enpoint(具有相同的参数集),那么它将得到完整的响应。可能吗?

1 个答案:

答案 0 :(得分:0)

您有很多选择。

一个选项是API级缓存,您可以使用生成响应所需的参数来创建密钥,然后获取数据并将该对保存在缓存中。然后,下次发出请求时,您将重新创建密钥并首先检查缓存。如果有的话,快乐的日子,请退还,否则,请取回并存储它。

这当然取决于您拥有的数据量,太多数据或太大数据,这将不起作用。您还可以将其存储一段时间,例如10分钟,1小时等。

如果您有大量数据并且无法进行这样的缓存,请考虑其他事项。也许创建您自己的no-sql缓存存储(也许使用MongoDB之类的东西),将其存储并从那里检索,而无需进行任何更改,因此它是直接检索的,因此非常快捷。

您还可以使用类似Redis Cache之类的东西。 很多选择,只要选择适当的选项即可。