代码之家  ›  专栏  ›  技术社区  ›  Paul

为什么OutputCache属性需要设置varyByParam参数?

  •  1
  • Paul  · 技术社区  · 16 年前

    我对此没有做过任何研究,只是好奇而已。

    ASP.NET MVC中的OutputCacheAttribute类需要Duration和VaryByParam的值。我知道为什么需要持续时间,但不是varybyparam。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Will    16 年前

    如果他们不要求您配置这个,您可能会无意中获得相同页面的数万个缓存副本,从而使输出缓存的好处失效。

    因此,有两种解决方案——一种是检查每个输出是否重复,或者两种解决方案,使缓存依赖于特定页相关变量的值。第一个可能太贵了,所以他们跟第二个走了。

    他们试图引导您进入“成功之坑”,强迫您认识到当存在某些查询字符串/日志参数时,页面呈现方式可能会有所不同,并强迫您考虑输出缓存的含义和工作方式。

        2
  •  0
  •   Paul    15 年前

    更新:好的,从最新版本的MVC(3)开始,它不再是必需的,默认情况下不使用参数,即只有一次缓存存在。这是我以前预料到的行为。

    推荐文章