提问人:SimonGoldstone 提问时间:7/6/2021 更新时间:7/7/2021 访问量:366
在 Asp.net Core MVC 中使用 <distributed-cache> 标记帮助程序时如何破坏缓存或获取缓存密钥
How to bust the cache or obtain cache key when using <distributed-cache> Tag helper in Asp.net Core MVC
问:
标签和 Redis 有问题。<distributed-cache>
我们有一个 Razor 视图,用于显示长时间运行的查询的结果。我们从使用 注入的服务中获取数据。数据很少更新,因此我们将内容包装在具有 long 属性的标记帮助程序中。<partial>
@inject
<distributed-cache>
expires-after
但是,当数据最终更新时(在我们应用程序的另一部分),我们需要从分布式缓存中删除该键,以便强制页面在下次执行时更新。(我们无法预测数据何时会发生变化 - 我们只能响应外部事件。
我们遇到的问题是,尽管具有固定属性,但缓存键似乎无法预测。例如,创建一个键,类似于 Redis 中的行。name
<distributed-cache name='_myQuery' vary-by-user='true'>
7/za/Bc/ZRn/MsR/hG69TYTx1LEzqBvlyH1OLJgrpk4=
我怎样才能:
预测/计算 redis 中的缓存键是什么,以便我可以在应用程序的另一部分删除它?;
强制标签忽略缓存的值一次?我知道我们有这个属性,因为这是行不通的,因为页面不知道何时使缓存失效。
<distributed-cache>
enabled
答:
0赞
SimonGoldstone
7/7/2021
#1
在深入研究 ASP.NET Core 源代码后,我找到了 CacheTagKey.cs 文件,其中包含 和 方法。这些方法从一堆参数创建密钥,然后 SHA256 对密钥进行哈希处理并返回 base64。GenerateKey()
GenerateHaskedKey()
所以看起来我可以用它来预测缓存键并解决问题。
评论