Delphi 如何使用KbmMW的缓存功能?
我已在服务器端将kbmMWUNIDACConnectionPool属性设置为:Delphi 如何使用KbmMW的缓存功能?,delphi,sockets,indy,3-tier,Delphi,Sockets,Indy,3 Tier,我已在服务器端将kbmMWUNIDACConnectionPool属性设置为: kbmMWUNIDACConnectionPool1.EnableCache := True; kbmMWUNIDACConnectionPool1.MaxCacheAge := 30; kbmMWUNIDACConnectionPool1.MaxCacheEntries := 100; kbmMWUNIDACConnectionPool1.MaxCacheRecordCount := 10000; 但是,我发现缓
kbmMWUNIDACConnectionPool1.EnableCache := True;
kbmMWUNIDACConnectionPool1.MaxCacheAge := 30;
kbmMWUNIDACConnectionPool1.MaxCacheEntries := 100;
kbmMWUNIDACConnectionPool1.MaxCacheRecordCount := 10000;
但是,我发现缓存功能无效,请查看Unidac监视器屏幕截图:
这是相同的查询语句,但服务器端每次都会询问数据库!为什么?
一句话:如何正确使用缓存功能?
提前感谢!:) 您需要启用应该缓存查询语句(xxxquery组件的cached属性)以及应该如何缓存它(同一组件上的CacheFlags) 缓存标志可以是
- mwcfDontAge-缓存项不会过期,将保留在缓存中
- mwcfDontGarbageCollect-缓存项将永远不会被垃圾收集(效果类似于dont age)
- mwcfDefsOnly-仅缓存查询的定义(字段定义和参数定义)
- mwcfUpdateOnResolve-如果已解析,缓存条目将使用新数据和字段/paramdefs更新
- MWCFleeveOnResolve-如果已解决,缓存项将被删除
- mwcfNoParamsInCacheID-不要将参数内容存储为缓存ID的一部分(因此不同的ParameterValue会导致相同的缓存条目)
- MWCSignoreCachedParams-未使用
- mwcfDontAge-缓存项不会过期,将保留在缓存中
- mwcfDontGarbageCollect-缓存项将永远不会被垃圾收集(效果类似于dont age)
- mwcfDefsOnly-仅缓存查询的定义(字段定义和参数定义)
- mwcfUpdateOnResolve-如果已解析,缓存条目将使用新数据和字段/paramdefs更新
- MWCFleeveOnResolve-如果已解决,缓存项将被删除
- mwcfNoParamsInCacheID-不要将参数内容存储为缓存ID的一部分(因此不同的ParameterValue会导致相同的缓存条目)
- MWCSignoreCachedParams-未使用