自定义输出缓存mvc4

时间:2015-04-18 05:31:09

标签: c# asp.net-mvc asp.net-mvc-4 c#-4.0 caching

我正在尝试在MVC4项目上使用缓存,并且我在主页上设置了以下属性:

[OutputCache(Location=OutputCacheLocation.ServerAndClient,Duration=14400)]

这样可以正常工作,但持续时间会导致我遇到问题。我需要的是缓存在新的一天开始(每天午夜)到期。我可以将持续时间设置为24小时,但这并不能解决我的页面在每天开始时有新内容的问题。我已经通过param方法探索了各种变化,我知道我可以将日期附加到URL,但这非常混乱。有没有人知道另一种选择?

提前致谢

1 个答案:

答案 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)]