使用数据源缓存
除了在页面或用户控件级别进行缓存之外,也可以在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
2011-5-30 21:47 danny
除了在页面或用户控件级别进行缓存之外,也可以在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
发表评论
-
15、使用部分页面缓存2
2011-06-02 09:17 7753、共享用户控件的输出缓存 默认情况下,同一个用户控件在不同页 ... -
14、使用部分页面缓存
2011-05-31 16:10 853使用部分页面缓存 1、 ... -
13、使用页面输出缓存2
2011-05-23 09:23 9538、使用编程方式设置页面输出缓存过期 可以使用Response ... -
12、使用页面输出缓存
2011-05-22 09:31 714使用页面输出缓存 可以给页面添加<%@ OutputC ... -
11、缓存概览
2011-05-21 13:04 436缓存概览 ASP.NET 3.5 Framework支持下面 ... -
10、使用用户配置文件
2011-05-18 09:09 1117使用用户配置文件 Asp.net Framework提供了一 ... -
9、使用Session状态
2011-05-17 09:16 882使用Session状态 不可能 ... -
8、使用浏览器Cookie
2011-05-16 11:13 1203使用浏览器Cookie set-cook ... -
7、使用角色管理器
2011-05-14 10:32 560使用角色管理器 Asp.net Framework提供三个角 ... -
6、使用ASP.NET Membership
2011-05-13 21:36 794使用ASP.NET Membership 通过Asp.net ... -
5、配置安全授权
2011-05-13 15:14 601配置安全授权 授权是指识别用户是否可以访问特定资源的过程。 ... -
4、配置身份验证
2011-05-13 09:08 962配置身份验证 Asp.net Framework支持三种验证 ... -
3、使用LoginStatus控件
2011-05-12 21:44 936使用LoginStatus控件 根据当前用户的验证状态,Lo ... -
2、使用CreateUserWizard控件
2011-05-12 09:18 1177使用CreateUserWizard控件 CreateUse ... -
1、使用Login控件
2011-05-11 21:27 1398使用Login控件 1、Login控件概览 加密文件: Se ...
相关推荐
JX_API可能包含了项目中关于数据源切换和缓存操作的相关接口定义,对于理解和使用这个系统至关重要。 5. **测试通过**:在项目开发完成后,进行测试是验证系统功能是否正常的关键步骤。这里的“测试通过”表明该...
对于每个数据源,我们可以创建对应的`MapperScannerConfigurer`,扫描对应的Mapper接口,并在接口上使用`@CacheNamespace`注解指定缓存区域: ```java @Configuration public class MyBatisConfig { @Autowired @...
为了方便在代码中切换数据源,我们可以使用注解来指定当前操作应使用哪个数据源。例如,可以自定义一个`@UseDataSource`注解,然后在Service方法上使用它,使得SpringAOP可以在运行时解析并应用这个注解。 7. **...
2. 配置主数据源:通过`@Primary`注解标记主数据源,Spring Boot会优先使用这个数据源作为默认数据源。 3. 使用Druid的DynamicDataSource类:该类是一个抽象的数据源,可以动态切换数据源。你需要实现其方法,根据...
除了基本的添加和检索,我们还可以设置缓存依赖性,确保当数据源(如数据库表)发生变化时,缓存自动失效。在VS2003中,这通常涉及到创建`SqlCacheDependency`对象,与特定的SQL查询关联。 ```vb Dim sqlDependency...
5. **配置SpringMVC**:在SpringMVC的配置中,可以使用`HandlerInterceptor`拦截器来根据请求信息选择对应的数据源,或者在Controller层通过方法参数或注解来决定数据源。 6. **测试验证**:编写测试用例,确保在...
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数据源的缓存,以提高数据加载速度。 - **预处理和转换**:在读取XML之前,可以使用XSLT(Extensible Stylesheet Language Transformations)转换XML,以优化数据结构。 6. **使用...
2. **数据源路由**:使用Spring的AbstractRoutingDataSource,它可以根据一定的规则(如请求URL、方法名、注解等)动态选择使用哪个数据源。你需要自定义一个DataSourceRouter实现这个逻辑。 3. **事务管理**:为每...
类库数据上传指的是利用特定的软件库或API,将数据从源系统(如文件、数据库或其他数据源)导入到目标系统中。这个过程通常涉及到数据格式转换、数据验证和错误处理等步骤。 防止SQL注入是数据上传过程中的一项关键...
若未找到,则从原始数据源(如数据库)获取,将获取到的数据放入缓存,并返回给应用,这一过程称为缓存未命中或缓存缺失。 数据缓存策略包括: 1. LRU(Least Recently Used):最近最少使用的替换策略,当缓存满...
分布式缓存服务器Memcached是互联网应用中广泛使用的内存对象缓存系统,用于减轻数据库的负载,提高应用程序的性能。Memcached的设计目标是简单且高效,它通过在内存中存储数据来提供快速的数据访问。让我们深入了解...
这样,我们就可以在需要使用特定数据源的Service或Repository中通过`@Qualifier`注解指定数据源,如`@Autowired @Qualifier("primaryDataSource")`。 接下来,我们讨论第二种实现方式:动态添加数据源。这种方式更...
在SpringBoot项目中,多数据源支持和Redis缓存是两个重要的技术概念,它们能够帮助企业构建灵活、可扩展的应用系统。下面将详细讲解这两个主题及其相互结合的实践应用。 一、SpringBoot多数据源支持 1. **多数据源...
在Android开发中,数据缓存是一项重要的技术,它能够提高应用程序的性能和用户体验。当用户访问数据时,如果数据已经被缓存,系统可以快速地从本地读取,避免了网络延迟或频繁数据库查询带来的影响。本示例"Android...
此外,Shiro的缓存管理也可以配置为使用Redis或Memcached等分布式缓存,以实现跨数据源的权限缓存。 4. **流程完善**:虽然描述中提到shiro的权限流程还需完善,这意味着可能需要实现更复杂的权限控制,例如角色、...
本文将深入探讨“java缓存数据”这一主题,结合提供的标签“源码”和“工具”,我们将从源代码层面和常用工具角度来解析Java缓存的相关知识。 首先,Java缓存数据的基本原理是将频繁访问的数据存储在内存中,避免...
1. **提升数据读取效率:**通过存储常用或重复使用的数据副本,缓存能够快速提供数据访问,减少对底层数据源的依赖。 2. **缓解 IO 压力:**缓存能够减轻数据库和其他数据存储的压力,降低 I/O 操作频率,进而提高...
数据源缓存管理使用ConcurrentHashMap维护租户ID到数据源的映射关系,实现高效的动态数据源切换。 数据源动态添加在运行时根据需要动态添加新的数据源,并通过DynamicDataSourceConfig类进行配置。 ### 请求拦截...
2. **缓存加载**:当请求的数据不在缓存中时,从其他数据源(如数据库、网络请求)获取并添加到缓存中。 3. **缓存过期策略**:设置每个条目的生命周期,例如通过添加一个额外的元数据字段来记录插入时间,然后在...