ASP.net не кэширует страницу с определенной строкой запроса - PullRequest
1 голос
/ 14 февраля 2010

Я знаю, что могу использовать атрибут VaryByParam, но то, что он делает, не совсем то, к чему я стремлюсь.

Что происходит, так это то, что разные версии страницы кэшируются на основе строки запроса.

Например, Page.aspx? ID = Том имеет собственную кэшированную версию, а ID = Арнольд - другую. Теперь я хочу не кэшировать Арнольда вообще. Я хочу кэшировать страницу только тогда, когда строка запроса - Tom.

Есть идеи?

Ответы [ 3 ]

1 голос
/ 21 декабря 2010

для 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!

0 голосов
/ 21 февраля 2010
    <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, не будет кэшироваться.

0 голосов
/ 14 февраля 2010

Попробуйте использовать VaryByCustom и переопределить метод GetVaryByCustomString в классе Application.

...