实验目的:
把数据放到Cache中,在指定的时间内,可以直接从Cache中获取,避免对数据库等的压力。
案例:人员列表的缓存
(*)页面缓存、数据库源缓存。。。
(*)memcached
代码
Cache.html
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Cache.aspx.cs" Inherits="wj.Cache" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
用户信息:
<ul>
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate><li>姓名:<%#Eval("username") %>密码:<%#Eval("password") %></li></ItemTemplate>
</asp:Repeater>
</ul>
</div>
</form>
</body>
</html>
Cache.cs
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace wj
{
public partial class Cache : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//人员信息展示
/*
DataTable tt= SqlHelper.ExecuteQuery("select * from T_users"); */
//缓存,使得查询过的数据先保存在内存中
//1.数据查询来了。好。先去缓存中查找
DataTable tt = (DataTable)HttpRuntime.Cache["persons"];
if (tt == null)//如果缓存Catche中没有,再去数据库中查询,,这样可以降低数据库服务器的压力
{
tt = SqlHelper.ExecuteQuery("select * from T_users");
//将查询的结果存入缓存中,设置30秒后过期
HttpRuntime.Cache.Insert("persons", tt, null, DateTime.Now.AddSeconds(30), TimeSpan.Zero);
}
Repeater1.DataSource = tt;
Repeater1.DataBind();
}
}
}
调试
调试打开,cache.aspx,在30秒之内,点击刷新按钮,调试查看后,tt已经有了缓存信息;
刷新页面后。