Проблема: когда пользователь показывает Default.aspx, страница загружает кешированную версию содержимого Blog.ascx (потому что она попала в тот же страница снова в течение 600 секунд), код Page.Title не выполняется, поэтому заголовок остается пустым, а не <title>Title of Blog Post</title>
, например, когда он впервые загружает страницу в первый раз.Проблема кэширования: программная страница ascx/usercontrol Page.Title игнорируется при кэшированной загрузке страницы
У моего сайта asp.net есть Blog.ascx, чтобы обрабатывать загрузку содержимого отдельного сообщения в блоге. Default.aspx содержит ссылку и использует страницу Blog.ascx Blog.ascx имеет собственный кэширование:
<%@ OutputCache Duration="600" VaryByParam="None" VaryByCustom="Url" %>
Обычай кэширования, расположенный в Global.asax.cs является:
public override string GetVaryByCustomString(HttpContext context, string custom)
{
switch (custom.ToUpper())
{
case "URL":
return context.Request.Url.ToString().ToLower().Trim();
default:
throw new NotImplementedException();
}
}
Событие Blog.ascx.cs Page_Load обрабатывает значение/содержание программной метки
protected void Page_Load(object sender, EventArgs e)
{
Page.Title = "Title of Blog Post";
}
Любые предложения?
Вы не можете избежать этой проблемы - вам нужно переконфигурировать свою идею, чтобы она работала, либо удалите кеш, либо сохраните заголовок на главной странице, либо создайте собственный кеш вашего рендера. – Aristos