This Blog is not active anymore, further posts will be available on my company website. Read new posts here
Soms wil je een pagina in zijn geheel cachen met uitzondering van één element(bijvoorbeeld loginnaam, of de tijd waarop de pagina is opgevraagd). In ASP.Net 1.1 kan je voor dat ene element een control ontwikkelen en deze in de output cache directive VaryByControl opgeven. In ASP.NET 2.0 vind je het substitution Control. Dit control wordt in zijn geheel nooit gecached. Verder kan je binnen dit control een Static Methode opgeven. Deze methode moet de parameter (HttpContext context) bevatten en een string retourneren.
Door het gebruik van onderstaand page directive zorgen we ervoor dat de pagina voor één minuut volledig gecached wordt.
<%@ OutputCache Duration="60" VaryByParam="none" %>
Onderstaand element wordt altijd gecached
De pagina staat in cache sinds:
<asp:Label ID="lblInCache" runat="server" Text="Label"></asp:Label>
Onderstaand element wordt niet gecached omdat gebruik is gemaakt van een Substitution control. Dit control roept de methode GetCurrentDateTime aan wat de huidige datum en tijd als retourneerd.
Pagina werd opgevraagd op:
<asp:Substitution ID="sbstPageAccessed" runat="server" MethodName="GetCurrentDateTime" />
In het code behind bestand wordt de waarde van lblInCache gevuld met de huidige datum en tijd. Omdat de pagina in de cache geplaatst is wordt deze regel alleen uitgevoerd wanneer de pagina verlopen is, of voor de eerste keer wordt opgevraagd.
protected void Page_Load(object sender, EventArgs e)
{
lblInCache.Text = DateTime.Now.ToString();
}
Onderstaande regel wordt altijd uitgevoerd omdat deze vanuit het substitution control wordt aangeroepen.
protected static string GetCurrentDateTime(HttpContext context)
{
return DateTime.Now.ToString();
}
Download de voorbeeldcode hier.