16、使用数据源缓存

使用数据源缓存

除了在页面或用户控件级别进行缓存之外,也可以在DataSource控件层面进行缓存。
SqlDataSource
ObjectDataSource
XmlDataSource
缓存,LinqDataSource不支持缓存

使用DataSource控件缓存的一个好处是DataSource控件可以在数据更新时自动重新载入数据。
DataSource控件同样非常聪明,可以在多个页面间共享相同的数据。

1、使用绝对缓存过期策略
当使用绝对缓存过期策略时,DataSource承载的数据在内存中缓存一段特定的时间。如果数据不会很频率地修改,使用绝对缓存过期策略就很有用。
如果知道保存在数据库表中的记录一天只会被修改一次,没理由有人Web页面时,每次都从数据库中读取相同的数据。
注意:
当使用SqlDataSource控件缓存时,SqlDatasource控件的DataSourceMode属性必须设为DataSet(默认值),而不是DataReader.

SqlDataSource控件并不保证会缓存数据到CacheDuration指定的时间,理解这一点非常重要。
在内部,DataSource控件使用了Cache对象进行缓存。该对象支持自我净化功能(scavenging)。当内存资源变得很低时,Cache对象会自动从缓存中移除项目。

关闭数据库,也会显示数据。

2、使用弹性缓存过期策略
使用弹性缓存过期策略时,除非数据在指定的时间内再次被请求访问,否则缓存就会失效。

DataSourceSlidingCache.aspx
<%@ Page Language="C#" %>

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

    protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
    {
        lblMessage.Text = "Selecting data from database";
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="lblMessage" EnableViewState="false" runat="server" />
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
            <Columns>
                <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True"
                    SortExpression="id" />
                <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
                <asp:BoundField DataField="Director" HeaderText="Director" SortExpression="Director" />
                <asp:BoundField DataField="DateReleased" HeaderText="DateReleased" SortExpression="DateReleased" />
                <asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" />
            </Columns>
        </asp:GridView>
    </div>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" EnableCaching="true" CacheExpirationPolicy="Sliding"
        CacheDuration="15" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
        SelectCommand="SELECT * FROM [Movies]" OnSelecting="SqlDataSource1_Selecting">
    </asp:SqlDataSource>
    </form>
</body>
</html>


2011-5-30 21:47 danny

你可能感兴趣的:(C++,c,Web,cache,XHTML)