如何使用KbmMW的缓存功能?

时间:2012-04-25 10:08:26

标签: delphi sockets indy 3-tier

我在服务器端设置了kbmMWUNIDACConnectionPool属性:

kbmMWUNIDACConnectionPool1.EnableCache := True;
kbmMWUNIDACConnectionPool1.MaxCacheAge := 30;
kbmMWUNIDACConnectionPool1.MaxCacheEntries := 100;
kbmMWUNIDACConnectionPool1.MaxCacheRecordCount := 10000;

但是,我发现缓存功能没有效果,请查看Unidac Monitor截图:

enter image description here

它是相同的查询语句,但服务器端每次都询问数据库!为什么? 总之一句:如何正确使用缓存功能? 提前致谢! :)

1 个答案:

答案 0 :(得分:4)

您需要启用查询语句应缓存(xxxquery组件的缓存属性)以及缓存方式(同一组件上的CacheFlags)。

CacheFlags可以是

  • mwcfDontAge - 缓存条目不会过期并将保留在缓存中
  • mwcfDontGarbageCollect - 缓存条目永远不会被垃圾收集(效果类似于不老化)
  • mwcfDefsOnly - 仅缓存查询(fielddef和参数定义)的定义。
  • mwcfUpdateOnResolve - 如果已解决,将使用新数据和字段/参数来更新缓存条目。
  • mwcfLeaveOnResolve - 如果已解决,将删除缓存条目。
  • mwcfNoParamsInCacheID - 不要将参数内容存储为缓存ID的一部分(因此不同的参数值会导致相同的缓存条目)
  • mwcfIgnoreCachedParams - 未使用。