挑战缓存!

本文介绍ASP.NET中的页面缓存技术,并重点讲解Substitution控件的使用方法及应用场景,通过实例展示如何利用该控件实现部分数据的实时更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

缓存, 爱让人恨.有时候一个页面如果要实时更新的话 我们不得不舍掉缓存

但是 如果一个页面用了Substitution的话 效果就完全不同了 让人大可放心的去用缓存技术 再也不用担心不会及时更新了! 那什么是Substitution呢?

在google 词典中的意思是:代理,替换,交换 的意思 .顾名思义在Asp.net 控件中 如果用到缓存中 这个控件就意味着 是代替缓存的意思 就是说不 如果用了这个控件 实现了这个控件中的方法 这个对象中的信息就可以不缓存了. 说了这么多 那这个控件是怎样用的呢?

1. 先在页面中加上整页缓存

整页缓存的参数[必要的]:Duration 属性:页面或者是控件缓存的时间. 以秒为单位的.

Location 属性 :缓存地点 这个属性可以是:Any,Client,Downstream,None,Server,ServerAndClient

这些参数的意思: Any: 默认值 表示可以包括客户端浏览器、代理服务器或处理请求的服务器上。但是:包含在用户控件中的@ OutputCache指令不支持此属性 .Client 当然是将缓存放到客服端. Downstream 没有详细说明.None 不缓存 Server 缓存服务器端 ServerAndClient 将缓存放到服务器端和客服端

VaryByParam属性: 通俗点的说法是:如果将值放到这个属性里 就会让缓存失效.重新加载页面.

2.运用

前台:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<%@ OutputCache Duration="40" Location="ServerAndClient" VaryByParam="none"; %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

<title>SUBSTITUION运用</title>

</head>

<body>

<form id="form1" runat="server">

<div>这是用了缓存的时间:

<asp:Literal ID="litoldTime" runat="server"></asp:Literal>

<br />

这是用了SUBSTITUION后的效果

<asp:Substitution ID="Substitution" runat="server" MethodName="Get"/>

</div>

</form>

</body>

</html>

后台:

public partial class _Default : System.Web.UI.Page

{

/// <summary>

/// 加载事件

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

protected void Page_Load(object sender, EventArgs e)

{

this.litoldTime.Text = DateTime.Now.ToString();

}

/// <summary>

/// 动态加载的事件

/// </summary>

/// <param name="conect"></param>

/// <returns>要动态输出的内容</returns>

protected static string Get(HttpContext conect)

{

string str = DateTime.Now.ToString();

return str;

}

}

可能你也注意到了 在前台中:这是用了SUBSTITUION后的效果

<asp:Substitution ID="Substitution" runat="server" MethodName="Get"/> 其中有一个MethodName 的属性 值是="Get" 而在后台中有一个方法也是Get()

对: 就是在这个方法中实现对不缓存的内容做输出的.

思考:虽然页面的缓存中用一个很小的行为 但是对于数据库减少压力来说却是一个重要的一个方法让我们有更多的资源做别的事. 不要放过节约资源的行为 哪怕是一点.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值