关于ASP.NET缓存,滑动到期的目的或原因是什么?

时间:2009-07-08 04:00:57

标签: .net asp.net performance caching

我正在寻找一个很好的解释,为什么在Web应用程序中缓存数据时会使用滑动过期。似乎您总是希望使用绝对过期来缓存内容,因此强制刷新数据。使用滑动到期时,您可能会无限期地缓存数据。它只对缓存静态数据有用吗?滑动到期时有什么常见的场景?谢谢。

3 个答案:

答案 0 :(得分:2)

有些事情可能无限期地缓存,但只有当你有足够的内存来保留它们时才可以。

答案 1 :(得分:2)

如果您仔细实施更新缓存,则滑动过期是有意义的。只要您不断使用缓存数据,系统就会尝试将其保留在内存中,以便您可以点击它(实际上,即使没有过期,基于内存压力和其他一些因素,也无法保证可用性)。

因此,如果您在进行任何类型的更新后注意使其无效,那么您的数据不会被无限制地缓存。同样缓存静态数据也没有意义,因为有很多场景可以缓存大量非静态数据。我会说,如果在项目更新之间,您可以统计地获得3个请求,请缓存该项目,并且您将获得性能。

答案 2 :(得分:1)

是的,数据可以无限期缓存 - 正如你所说的那样,只有静态才有意义。

当你有一个昂贵的数据(例如需要很长时间来计算,检索等)时,这很有用,这对于未知的时间长度是有用的,但是大多数访问都会很接近。

一个虚构的例子是你可以写一个税务时间申请,供处理许多公司客户的会计师事务所使用。该应用程序需要从税务部门下载公司的详细信息。有意义的是,单个公司的所有操作都会在同一时间完成(比如为所有员工生成工资单),所以如果您下载这些详细信息并将其缓存到期,那么它们只会持续很长时间因为你还在和那家公司合作,这是一段未知的时间。

当然标准缓存规则仍然适用,如果内存不足,可以清除缓存的数据等。