<distributed-cache>标记和Redis有问题。
我们有一个<partial> Razor视图,它显示长期运行的查询的结果。我们使用@inject从注入的服务中获取数据。数据很少更新,因此我们使用一个长的<distributed-cache>属性将内容包装在一个expires-after标记助手中。
但是,当数据最终被更新时(在我们的应用程序的另一部分中),我们需要从分布式缓存中删除该键,以强制页面在下一次执行时更新。(我们不可能预测数据何时会改变--我们只能对外部事件做出反应。)
我们遇到的问题是,尽管有一个固定的name属性,但缓存键似乎无法预测。例如,<distributed-cache name='_myQuery' vary-by-user='true'>按照Redis中的7/za/Bc/ZRn/MsR/hG69TYTx1LEzqBvlyH1OLJgrpk4=创建了一个关键内容。
我怎样才能做到:
<distributed-cache>标记忽略缓存的值这一次?我知道我们有enabled属性,因为这不能工作,因为页面不知道什么时候使缓存失效。发布于 2021-07-06 20:10:31
在深入研究ASP.NET核心源之后,我找到了包含GenerateKey()和GenerateHaskedKey()方法的CacheTagKey.cs文件。这些方法从一组参数创建密钥,然后SHA256对键进行散列并返回base64。
所以看起来我可以用它来预测缓存密钥并解决这个问题。
https://stackoverflow.com/questions/68263076
复制相似问题