【发布时间】:2010-11-08 22:12:19
【问题描述】:
我正在寻找一个很好的解释,说明为什么在 Web 应用程序中缓存数据时会使用滑动过期。似乎您总是希望使用绝对过期来缓存内容,因此强制刷新数据。通过滑动到期,您可能会无限期地缓存数据。它仅对缓存静态数据有用吗?当滑动到期有帮助时,常见的场景是什么?谢谢。
【问题讨论】:
标签: .net asp.net performance caching
我正在寻找一个很好的解释,说明为什么在 Web 应用程序中缓存数据时会使用滑动过期。似乎您总是希望使用绝对过期来缓存内容,因此强制刷新数据。通过滑动到期,您可能会无限期地缓存数据。它仅对缓存静态数据有用吗?当滑动到期有帮助时,常见的场景是什么?谢谢。
【问题讨论】:
标签: .net asp.net performance caching
有些东西可以无限期地缓存,但前提是你有足够的内存来保存它们。
【讨论】:
如果您仔细实施更新缓存,滑动过期是有意义的。只要您不断使用缓存的数据,系统就会尝试将其保存在内存中以便您可以访问它(实际上,即使它没有过期,也不能保证可用性,基于内存压力和其他一些因素)。
因此,如果您在发生任何类型的更新后注意使其无效,那么您的数据不会被无限期地缓存。此外,仅缓存静态数据没有意义,因为在很多情况下您会缓存大量实际上不是静态的数据。我想说,如果在一个项目的更新之间你可以统计地获得 3 个请求,缓存该项目,你就会获得性能。
【讨论】:
是的,数据可以无限期地缓存 - 正如您所说,只有在它是静态的情况下才有意义。
当您有一段昂贵的数据(例如,需要很长时间来计算、检索等)时,这很有用,这将在未知的时间长度内有用,但大多数访问将靠近在一起。
一个虚构的例子是,您可以编写一个报税时间应用程序,供处理许多企业客户的会计师事务所使用。该应用程序需要从税务部门提取公司的详细信息。一个公司的所有操作都将在同一时间完成是有道理的(比如为所有员工生成工资单),因此如果您下载这些详细信息一次并将它们缓存到一个滑动到期时间,它们将只保留多久因为您仍在与那家公司合作,时间不详。
当然,标准的缓存规则仍然适用,如果内存不足,可以清除缓存的数据等。
【讨论】: