Отключить кэширование на уровне страницы в пользовательском элементе управления
У меня есть страница со следующим определением кэширования:
<%@ OutputCache Duration="60" VaryByParam="None" %>
У меня есть пользовательский элемент управления на этой странице, который я не хочу кэшировать. Как я могу отключить его только для этого контроля?
1 ответ
Вариант первый
Используйте контроль замещения или API на своей странице. это позволяет вам кэшировать все на вашей странице, кроме части, содержащейся в элементе управления заменой.
http://msdn.microsoft.com/en-us/library/ms227429.aspx
Хороший способ использовать это - реализовать свой элемент управления в виде простого серверного элемента управления, который отображает html как строку, но делает это в контексте страницы (то есть с правильными идентификаторами клиента). У Скотта Гатри есть действительно хороший пример того, как это работает. Кстати, с вызовами AJAX тоже хорошо работает...
Отрывок из статьи Скотта Гу...
[WebMethod]
public string GetCustomersByCountry(string country)
{
CustomerCollection customers = DataContext.GetCustomersByCountry(country);
if (customers.Count > 0)
//RenderView returns the rendered HTML in the context of the callback
return ViewManager.RenderView("customers.ascx", customers);
else
return ViewManager.RenderView("nocustomersfound.ascx");
}
Вариант второй
Визуализируйте динамическое управление с помощью вызова AJAX при загрузке страницы. Таким образом, вы можете безопасно кешировать всю страницу (включая вызов AJAX), и это только отображаемый результат вызова, который изменяется между страницами.