Как не кэшируют пользовательский элемент управления ASP.NET?

Поскольку другие комментаторы предлагают самый эффективный способ сделать, это, кажется:

if ($(selector).length ) {
    // Do something
}

, Если у Вас абсолютно должно быть существование () функция - который будет медленнее - можно сделать:

jQuery.fn.exists = function(){return this.length>0;}

Тогда в Вашем коде можно использовать

if ($(selector).exists()) {
    // Do something
}

, Как отвечено здесь

5
задан gsb 10 August 2009 в 18:08
поделиться

2 ответа

Лично я использую атрибут VaryByCustom, чтобы предоставить зарегистрированным и вышедшим из системы пользователям различные кешированные просмотры страниц:

<%@ OutputCache VaryByCustom="IsLoggedIn" Duration="30" VaryByParam="*" %>

затем в global.asax вы помещаете

public override string GetVaryByCustomString(HttpContext context,
    string arg)
{
    if (arg == "IsLoggedIn")
    {

        if (context.Request.IsAuthenticated)
        {
            return "Logged in: " + context.User.Identity.Name;
        }
        else
        {
            return "Not Logged In";
        }

    }
    else
    {
        return base.GetVaryByCustomString(context, arg);
    }

}

Я просто выкину это там. Как насчет управления заменой?

http://msdn.microsoft.com/en-us/library/ms228212.aspx

Согласно веб-сайту msdn:

Элемент управления заменой позволяет вам создавать области на странице, которые можно обновляется динамически, а затем интегрирован в кешированную страницу. ... Контроль замены предлагает упрощенное решение для частичной страницы кеширование для страниц, где большинство содержимого кэшируется. Вы можете вывод кэшировать всю страницу, а затем используйте элементы управления подстановкой, чтобы указать части страницы, которые освобождены из кеширования.

Я никогда не использовал элемент управления заменой лично, но я случайно нашел его на днях, и это звучало так, как будто он может каким-то образом внедрить обновленный контент в вывод страницы, кэшируемой в противном случае.

10
ответ дан 13 December 2019 в 19:32
поделиться

Вы можете кэшировать страницу и пользовательский элемент управления, но вы не можете кэшировать страницу, за исключением пользовательского элемента управления. Когда пользовательский элемент управления запускается, должна выполняться вся страница. Вы должны сделать так, чтобы кеш вывода для страницы распознавал разных пользователей.

Вы можете использовать VaryByHeader = "Cookie" для кеширования страницы для каждого набора файлов cookie, если идентификационные данные пользователя хранятся в файле cookie. . Вы можете использовать VaryByCustom = "SomeString" и реализовать проверку для SomeString , чтобы выполнить собственную проверку личности пользователя в методе GetVaryByCustomString в Global. asax .

1
ответ дан 13 December 2019 в 19:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: