ASP.net不会缓存具有特定查询字符串的页面

时间:2010-02-14 14:09:38

标签: asp.net caching query-string

我知道我可以使用VaryByParam属性,但它的作用并不完全是我的目标。

根据查询字符串缓存不同版本的页面会发生什么。

例如Page.aspx?ID = Tom有自己的缓存版本,ID = Arnold有另一个。现在我想要做的就是不要缓存Arnold。我只想在查询字符串为Tom时缓存页面。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

对于C#

    public static void cacheOutput(Page page, double minutes)
    {
        page.Response.Cache.SetExpires(DateTime.Now.AddMinutes(minutes));
        page.Response.Cache.SetCacheability(HttpCacheability.Server);
        page.Response.Cache.SetValidUntilExpires(true);
    }

最好是花几分钟时间。 好解! THX!

答案 1 :(得分:0)

尝试使用VaryByCustom并覆盖Application类中的GetVaryByCustomString方法。

答案 2 :(得分:0)

    <Extension()> _
    Public Sub CacheOutput(ByVal Page As Page, ByVal Minutes As Integer)
        Page.Response.Cache.SetExpires(Date.Now.AddMinutes(Minutes))
        Page.Response.Cache.SetCacheability(HttpCacheability.Server)
        Page.Response.Cache.SetValidUntilExpires(True)
    End Sub

这很有效。请注意,不会缓存具有查询字符串或POST参数的任何版本的页面。