XmlDataSource Cache

            这个问题是跟在上一随笔后的问题,我在做Menu的时候,Menu的数据源我用的是XmlDataSource,和上一篇的图是一样的,我用一个地区Menu来控制添加下面的一个县区Menu,数据是通过从olap数据模型中提取,然后在数据访问层先做好xml字符串,在展现层把xml字符串绑定到县区Menu。

            但是发生了一件非常奇怪的事,县区有时候能绑上,有时候绑不上,这真是让我头疼了,要不你就一次也绑不上,怎么搞的,依照经验我考虑到了Cache的问题,但没有想到是XmlDataSource的Cache问题,我又跟了程序,每次xml字符串都返回了,可最后绑定的时候就是没绑上,足足耗了我一下午。

            最后我发现了XmlDataSource几个属性:EnableCacheing CacheDuration
                                                                               CacheExpirationPolicy CacheKeyDependenc

CacheKeyDependenc :索引鍵,識別XmlDataSource控制項建立的所有快取物件
                                       XmlDataSource 控制項支援資料快取。當資料進行快取時,XmlDataSource 會從快取擷取資料,而不是從基礎資料檔案擷取資料。當快取過期時,它會從基礎檔案擷取資料,並重新快取資料。


快取的行為是由 CacheDuration 和 CacheExpirationPolicy 設定的組合管理。如果 CacheExpirationPolicy 設為 Absolute,則 XmlDataSource 會快取第一個資料擷取作業的資料,並在記憶體中保留該資料長達 CacheDuration 指定的時間量,隨後在時間到期後使它失效。然後會在下一個作業期間重新整理快取。如果 CacheExpirationPolicy 設為 Sliding,則資料來源控制項會快取第一個資料擷取作業的資料,但會為每個後續作業重設保留快取的時間間隔。自從上次資料擷取以來,如果在等於 CacheDuration 的時間內沒有任何活動,快取才會過期。

EnableCacheing :是否支持缓存。

好了,说到着,应该知道怎样搞定这个问题了吧!

第一:把EnableCacheing 设为false;
第二:CacheExpirationPolicy 设为Sliding ,CacheDuration 设为Infinite, CacheKeyDependenc 可以设为60或自定义吧!

posted on 2007-04-25 19:38  执法长老  阅读(323)  评论(0编辑  收藏  举报

导航