我正在尝试在MVC4项目上使用缓存,并且我在主页上设置了以下属性:
[OutputCache(Location=OutputCacheLocation.ServerAndClient,Duration=14400)]
这样可以正常工作,但持续时间会导致我遇到问题。我需要的是缓存在新的一天开始(每天午夜)到期。我可以将持续时间设置为24小时,但这并不能解决我的页面在每天开始时有新内容的问题。我已经通过param方法探索了各种变化,我知道我可以将日期附加到URL,但这非常混乱。有没有人知道另一种选择?
提前致谢
答案 0 :(得分:1)
解决方案是扩展OutputCacheAttribute
并创建一个适用于午夜的新工具,因为您可以在构造函数中设置Duration
。
public class OutputCacheMidnightAttribute : OutputCacheAttribute
{
public OutputCacheMidnightAttribute()
{
// remaining time to midnight
Duration = (int)((new TimeSpan(24, 0, 0)) - DateTime.Now.TimeOfDay).TotalSeconds;
}
}
你就像这样使用它
[OutputCacheMidnight(Location=OutputCacheLocation.ServerAndClient)]