Вариант один
Используйте Элемент управления заменой или API на своей странице. это позволяет вам кэшировать все на своей странице, кроме части, содержащейся в элементе управления заменой.
http://msdn.microsoft.com/en-us/library/ms227429.aspx
Один хороший способ использовать это - реализовать свой элемент управления в виде простого серверного элемента управления, который отображает html как строку, но делает это в контексте страницы (то есть с правильными идентификаторами клиента). У Скотта Гатри есть действительно хороший пример того, как это работает. Кстати, работает и с AJAX-вызовами ...
http://weblogs.asp.net/scottgu/archive/2006/10/22/Tip_2F00_Trick_3A00_-Cool-UI-Templating-Technique-to-use-with-ASP.NET-AJAX-for-non_2D00_UpdatePanel-scenarios.aspx
Отрывок из статьи Скотта Гу ...
[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), и это только отображаемый результат вызова, который изменяется между страницами.