`

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
分享到:
评论

相关推荐

    项目实例 带缓存框架 数据源切换

    JX_API可能包含了项目中关于数据源切换和缓存操作的相关接口定义,对于理解和使用这个系统至关重要。 5. **测试通过**:在项目开发完成后,进行测试是验证系统功能是否正常的关键步骤。这里的“测试通过”表明该...

    spring boot mybatis 多数据源与缓存.zip

    对于每个数据源,我们可以创建对应的`MapperScannerConfigurer`,扫描对应的Mapper接口,并在接口上使用`@CacheNamespace`注解指定缓存区域: ```java @Configuration public class MyBatisConfig { @Autowired @...

    SSM多数据源分包

    为了方便在代码中切换数据源,我们可以使用注解来指定当前操作应使用哪个数据源。例如,可以自定义一个`@UseDataSource`注解,然后在Service方法上使用它,使得SpringAOP可以在运行时解析并应用这个注解。 7. **...

    Java多数据源源码

    2. 配置主数据源:通过`@Primary`注解标记主数据源,Spring Boot会优先使用这个数据源作为默认数据源。 3. 使用Druid的DynamicDataSource类:该类是一个抽象的数据源,可以动态切换数据源。你需要实现其方法,根据...

    ASP.NET数据缓存

    除了基本的添加和检索,我们还可以设置缓存依赖性,确保当数据源(如数据库表)发生变化时,缓存自动失效。在VS2003中,这通常涉及到创建`SqlCacheDependency`对象,与特定的SQL查询关联。 ```vb Dim sqlDependency...

    java 多数据源

    5. **配置SpringMVC**:在SpringMVC的配置中,可以使用`HandlerInterceptor`拦截器来根据请求信息选择对应的数据源,或者在Controller层通过方法参数或注解来决定数据源。 6. **测试验证**:编写测试用例,确保在...

    《零基础学ASP.NET 2.0》第14章 数据源控件访问数据库

    14.1.1 使用SqlDataSource 数据源控件 246 14.1.2 参数声明 248 14.1.3 缓存数据 250 14.2 访问Access数据库 251 14.2.1 连接到Access数据文件 251 14.2.2 更新Access数据库 253 14.3 显示和转换XML数据 254 14.3.1 ...

    birt xml数据源

    - **缓存策略**:BIRT支持对XML数据源的缓存,以提高数据加载速度。 - **预处理和转换**:在读取XML之前,可以使用XSLT(Extensible Stylesheet Language Transformations)转换XML,以优化数据结构。 6. **使用...

    基于Spring的多数据源(Druid)定时任务

    2. **数据源路由**:使用Spring的AbstractRoutingDataSource,它可以根据一定的规则(如请求URL、方法名、注解等)动态选择使用哪个数据源。你需要自定义一个DataSourceRouter实现这个逻辑。 3. **事务管理**:为每...

    类库数据上传缓存的使用批处理

    类库数据上传指的是利用特定的软件库或API,将数据从源系统(如文件、数据库或其他数据源)导入到目标系统中。这个过程通常涉及到数据格式转换、数据验证和错误处理等步骤。 防止SQL注入是数据上传过程中的一项关键...

    数据缓存和图片缓存

    若未找到,则从原始数据源(如数据库)获取,将获取到的数据放入缓存,并返回给应用,这一过程称为缓存未命中或缓存缺失。 数据缓存策略包括: 1. LRU(Least Recently Used):最近最少使用的替换策略,当缓存满...

    分布式缓存服务器memcacaed的源代码

    分布式缓存服务器Memcached是互联网应用中广泛使用的内存对象缓存系统,用于减轻数据库的负载,提高应用程序的性能。Memcached的设计目标是简单且高效,它通过在内存中存储数据来提供快速的数据访问。让我们深入了解...

    springboot mybatis 集成多数据源 两种实现方式

    这样,我们就可以在需要使用特定数据源的Service或Repository中通过`@Qualifier`注解指定数据源,如`@Autowired @Qualifier("primaryDataSource")`。 接下来,我们讨论第二种实现方式:动态添加数据源。这种方式更...

    boot-multi-datasource:SpringBoot项目中的多数据源支持+redis缓存

    在SpringBoot项目中,多数据源支持和Redis缓存是两个重要的技术概念,它们能够帮助企业构建灵活、可扩展的应用系统。下面将详细讲解这两个主题及其相互结合的实践应用。 一、SpringBoot多数据源支持 1. **多数据源...

    Android缓存——将数据以对象的方式缓存到本地

    在Android开发中,数据缓存是一项重要的技术,它能够提高应用程序的性能和用户体验。当用户访问数据时,如果数据已经被缓存,系统可以快速地从本地读取,避免了网络延迟或频繁数据库查询带来的影响。本示例"Android...

    springBoot2.0+mybatis支持多数据源+shiro

    此外,Shiro的缓存管理也可以配置为使用Redis或Memcached等分布式缓存,以实现跨数据源的权限缓存。 4. **流程完善**:虽然描述中提到shiro的权限流程还需完善,这意味着可能需要实现更复杂的权限控制,例如角色、...

    java缓存数据

    本文将深入探讨“java缓存数据”这一主题,结合提供的标签“源码”和“工具”,我们将从源代码层面和常用工具角度来解析Java缓存的相关知识。 首先,Java缓存数据的基本原理是将频繁访问的数据存储在内存中,避免...

    PHP 缓存 PHP 缓存

    1. **提升数据读取效率:**通过存储常用或重复使用的数据副本,缓存能够快速提供数据访问,减少对底层数据源的依赖。 2. **缓解 IO 压力:**缓存能够减轻数据库和其他数据存储的压力,降低 I/O 操作频率,进而提高...

    (源码)基于SpringBoot和MyBatis的多租户数据源管理系统.zip

    数据源缓存管理使用ConcurrentHashMap维护租户ID到数据源的映射关系,实现高效的动态数据源切换。 数据源动态添加在运行时根据需要动态添加新的数据源,并通过DynamicDataSourceConfig类进行配置。 ### 请求拦截...

    java map 实现缓存技术

    2. **缓存加载**:当请求的数据不在缓存中时,从其他数据源(如数据库、网络请求)获取并添加到缓存中。 3. **缓存过期策略**:设置每个条目的生命周期,例如通过添加一个额外的元数据字段来记录插入时间,然后在...

Global site tag (gtag.js) - Google Analytics