下面的代码做了你需要的一切,并有几个重载微调某个网页的输出缓存:
@{
var seconds = 600; //10min
Response.OutputCache(seconds);
}
在幕后,这是包含在System.Web.WebPages.dll程序集中的扩展方法是这样的:
internal static void OutputCache(HttpContextBase httpContext, HttpCachePolicyBase cache, int numberOfSeconds, bool sliding, IEnumerable<string> varyByParams, IEnumerable<string> varyByHeaders, IEnumerable<string> varyByContentEncodings, HttpCacheability cacheability)
{
cache.SetCacheability(cacheability);
cache.SetExpires(httpContext.Timestamp.AddSeconds((double) numberOfSeconds));
cache.SetMaxAge(new TimeSpan(0, 0, numberOfSeconds));
cache.SetValidUntilExpires(true);
cache.SetLastModified(httpContext.Timestamp);
cache.SetSlidingExpiration(sliding);
if (varyByParams != null)
{
foreach (string index in varyByParams)
cache.VaryByParams[index] = true;
}
if (varyByHeaders != null)
{
foreach (string index in varyByHeaders)
cache.VaryByHeaders[index] = true;
}
if (varyByContentEncodings == null)
return;
foreach (string index in varyByContentEncodings)
cache.VaryByContentEncodings[index] = true;
}
哇,谢谢Mike。我甚至会给出一个答案奖金一个非常类似的问题没有答案:http://stackoverflow.com/questions/14780066/what-keeps-caching-from-working-in-webmatrix – Knox
你只知道一切关于WebPages就在你头上? :) – VoidKing
我记得只是知道在哪里看;) –