C# 如何从.NET core中的设备在一个时间跨度内只缓存一次内容?

C# 如何从.NET core中的设备在一个时间跨度内只缓存一次内容?,c#,asp.net,asp.net-core,caching,memorycache,C#,Asp.net,Asp.net Core,Caching,Memorycache,我正在尝试在我的网站后端(.NET内核)中实现一个简单的缓存。我想做的是缓存调用GET请求的次数,但我只想在某个时间跨度内为设备执行一次 我的意思是,如果某个(用户)设备发送GET请求以查看数据a,那么我想将其计算为请求的a,但如果同一个人在(例如)2分钟内再次重新加载页面,那么我不想将其计算为新请求。但是,2分钟后,如果同一设备再次请求数据A,则我要计算它 我目前使用的是simpleMemoryCache。我对每个数据都有唯一的键,我按如下方式计算请求数据的次数: if (_cache.Try

我正在尝试在我的网站后端(.NET内核)中实现一个简单的缓存。我想做的是缓存调用GET请求的次数,但我只想在某个时间跨度内为设备执行一次

我的意思是,如果某个(用户)设备发送GET请求以查看数据
a
,那么我想将其计算为请求的
a
,但如果同一个人在(例如)2分钟内再次重新加载页面,那么我不想将其计算为新请求。但是,2分钟后,如果同一设备再次请求数据
A
,则我要计算它

我目前使用的是simple
MemoryCache
。我对每个数据都有唯一的键,我按如下方式计算请求数据的次数:

if (_cache.TryGetValue(cacheKey, out numberOfTimes))
{
    _cache.Set(cacheKey, numberOfTimes + 1, cacheOptions);
}
else 
{
    _cache.Set(cacheKey, numberOfTimes, cacheOptions);
}

但是,我无法理解如何在特定时间跨度内将来自同一(用户)设备的请求标记为不被计算。我将感谢任何帮助

那怎么办?你用什么样的机制来区分设备?(.net会话?自定义头中预生成的设备ID?其他?)如果要在给定的时间跨度内只计算一次,则需要存储用户何时执行请求(如果lastCountedRequestDateTime