2011-06-06 170 views
1

我在一个文件(XML)上实现了缓存,该文件被发送到图形控件来呈现它。然而,我被告知以一种可以轻松开启和关闭的方式实现缓存(意思是在web.config中设置一个值)。Asp.NET缓存

有没有办法根据web.config文件中的值打开和关闭缓存?谢谢你!

@oded您提供的不适合我的情况,因为我不得不重写现有的代码,例如代码:

if(bool.parse(confi.... == "true"){ 
if(Cache[x] == null){ 
    load the XML document and insert it into the Cache object } 
else{ 
get the xml document from the Cache object. } } 

否则通过重新加载从对象的文档重复自己。

我确信有一个更好的解决方案。

+0

如果您需要根据配置开启/关闭开关,您可以重写您的代码。没有办法让代码保持原样并使其依赖于配置。 – Oded 2011-06-06 08:51:41

+0

注意:“缓存”与“会话”不同。这两个存储对象,但会话是用户特定的,缓存是应用程序范围(=所有用户获得相同的值)。 – 2011-06-06 08:55:35

+0

和以下内容: Response.AddCacheItemDependency(“CachedXml”); if(isCacheEnable == true) { Response.Cache.SetCacheability(HttpCacheability.Public); } else if isCacheEnable == false Response.Cache.SetCacheability(HttpCacheability.NoCache); } – Johan 2011-06-06 09:02:05

回答

3

只需检查config文件中的密钥值。

appSettings部分:

<add key="cacheXML" value="true" /> 

并在代码检查:

if(bool.Parse(ConfigurationManager.AppSettings["cacheXML"])) 
{ 
    // use caching 
} 

注:这将抛出一个异常,如果该键不应用程式设定中存在。注意2:你应该抽象出对配置的依赖关系,这样你就可以在不需要配置文件的情况下测试你的代码。

+0

感谢您的回答! – Johan 2011-06-06 09:01:38

0

有创建缓存的记录方式型材here - 当你的web.config包含您需要的缓存配置文件,然后让你的网页通过提供cacheprofile名在相关页面@outputcache指令使用的配置文件。

+0

他正在谈论缓存服务器上的XML文件 - 这与输出缓存有什么关系? – Oded 2011-06-06 07:49:12

+0

他把它标记为asp.net,所以大概他是在谈论缓存结果......(至少我希望他是,这是更有效的方式做事,没有一点重新处理相同的XML一遍又一遍! ) – Nathan 2011-06-06 07:54:49

+0

如何禁用持续时间属性?我缓存依赖于从中获取数据的XML文件? – Johan 2011-06-06 08:03:27

0

您可以将高速缓存方面添加到您的业务层。

但这取决于你如何实现你的业务逻辑?你有独立的业务层和某种依赖注入(比如Ninject)吗?

+0

不,我不。我正在使用webforms – Johan 2011-06-06 08:50:08

+0

因此,@Oded解决方案是最好的方法。 – BitKFu 2011-06-06 08:51:59

+0

如果你有一个独立的业务层,你可以很容易地为它添加一个缓存层...... – BitKFu 2011-06-06 08:52:47