Здесь важно отметить, что если ваш VaryByCustom изменяется, asp.net сохраняет отдельную кэшированную версию страницы.
Итак, предположим, что ваш VaryByCustom- "custom1" с Duration = "60", то это будет кэшироваться в течение 60 секунд.
Между тем, если ваш VaryByCustom изменится на «custom2» с длительностью = «60», asp.net будет хранить отдельную копию в кэше, которая отличается от кэша «custom1», и эта отдельная версия будет кэшироваться в течение 60 секунд.
Простой способ проверить это, изменив VaryByCustom на основе браузера.
В Global.asax
public override string GetVaryByCustomString(HttpContext context, string custom)
{
if (custom == "browser")
{
string browserName;
browserName = Context.Request.Browser.Browser;
browserName += Context.Request.Browser.MajorVersion.ToString();
return browserName;
}
else
{
return base.GetVaryByCustomString(context, custom);
}
}
Aspx
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="WebFormsPlayGround._Default" %>
<%@ OutputCache Duration="40" VaryByParam="None" VaryByCustom="browser" %>
Загрузка страницы
protected void Page_Load(object sender, EventArgs e)
{
lblTime.Text = "The time now is: <br/>";
lblTime.Text += DateTime.Now.ToString();
}
Я не включил разметку для asp: Label в aspx, но я надеюсь, что вы поняли основную идею.