2013-09-28 136 views
2

我有我想要启用输出缓存一个简单的网站,但它使用ASP.NET网页(http://asp.net/web-pages,而不是Web窗体或MVC)。任何指导?如果你希望缓存文件夹中的所有页面,将代码放在一个_PageStart文件启用输出缓存

Response.Cache.SetCacheability(HttpCacheability.Server); 
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60)); 
Response.Cache.SetValidUntilExpires(true); 
Response.Cache.VaryByParams.IgnoreParams = true; 

中,有:

回答

2

下面的代码做了你需要的一切,并有几个重载微调某个网页的输出缓存:

@{ 
    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; 
} 
4

你可以在你希望缓存服务器上的任何页面的顶部把这个。 MSDN上

的更多信息:http://msdn.microsoft.com/en-us/library/system.web.httpresponse.cache.aspx

+0

哇,谢谢Mike。我甚至会给出一个答案奖金一个非常类似的问题没有答案:http://stackoverflow.com/questions/14780066/what-keeps-caching-from-working-in-webmatrix – Knox

+0

你只知道一切关于WebPages就在你头上? :) – VoidKing

+0

我记得只是知道在哪里看;) –