gpt4 book ai didi

asp.net - 更改 ASP.NET 缓存项过期的频率?

转载 作者:行者123 更新时间:2023-12-04 00:34:12 25 4
gpt4 key购买 nike

我注意到 ASP.NET 缓存项每 20 秒检查一次(并可能被删除)(奇怪的是每次在 HH:MM:00、HH:MM:20 和 HH:MM:40 处)。我花了大约 15 分钟寻找如何更改此参数但没有成功。我还尝试在 web.config 中设置以下内容,但没有帮助:

<cache privateBytesPollTime="00:00:05" />

我不想做任何疯狂的事情,但是如果我的应用程序是 5 秒而不是 20 秒或至少 10 秒,那就太好了。

最佳答案

使用 Reflector 四处查看会发现该间隔是硬编码的。到期由内部处理 CacheExpires类,其静态构造函数包含

_tsPerBucket = new TimeSpan(0, 0, 20);
_tsPerBucketreadonly ,所以不能有任何配置设置可以在以后修改它。

然后在 CacheExpires.EnableExpirationTimer() 中设置将触发过期项目检查的计时器。 ...
DateTime utcNow = DateTime.UtcNow;
TimeSpan span = _tsPerBucket - new TimeSpan(utcNow.Ticks % _tsPerBucket.Ticks);
this._timer = new Timer(new TimerCallback(this.TimerCallback), null,
span.Ticks / 0x2710L, _tsPerBucket.Ticks / 0x2710L);
span的计算确保计时器恰好在 :00、:20、:40 秒触发,但我看不出有任何理由打扰。定时器调用的方法是 internal ,所以我认为没有任何方法可以设置自己的计时器来更频繁地调用它(忽略反射)。

然而,好消息是你真的没有任何理由关心间隔。 Cache.Get()检查该项目是否未过期,如果已过期,则立即从缓存中删除该项目并返回 null .因此,您永远不会从缓存中获取过期项目,即使过期项目可能会在缓存中停留长达 20 秒。

关于asp.net - 更改 ASP.NET 缓存项过期的频率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/268468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com