2009-08-13 50 views
2

我写出了一个类别的导航结构。每个类别都有一个ID,位于第三方搜索工具中。在任何应用程序开始时或以不同的时间间隔,我需要获取caetegories和它们的id,并将它们存储在字典中(或其他方式),以便我可以访问它们以便从id到name的链接重写。最好的方法来缓存存储在C字典#

+0

什么是应用程序上下文?客户端代码?负载均衡的Web服务器?缓存在不同情况下有不同的最佳解决方案。 – Precipitous 2009-08-13 05:12:39

+0

这是一个单一服务器上的Web应用程序。我认为就应用程序启动而言,最好的选择是何时。 – mickyjtwin 2009-08-13 05:25:04

回答

1

商店使用看起来是这样的,当你需要做阅读的格式字典在XML文件中的重写

<nodes> 
<node id="1">Some Nav Data</node> 
</nodes> 

然后你有2种选择,写一个单独的进程,以特定时间间隔更新文件,或者当前进程可以在设定的时间间隔后更新文件。

如果您觉得加载和解析XML太过分了,可以考虑将类序列化到包含简单哈希表或字典的磁盘。

0

你在说多少个设置?为什么你需要一个缓存,而不是仅仅使用带后台线程的内存字典来定期重新加载呢?

如果您需要缓存,您可以查看EntLib中的caching application block。您可以设置到期时间间隔,然后handle an even on expiry重新填充缓存。但坦率地说,这听起来超出了你的要求。

+0

将会有大约70个类别及其关联的ID – mickyjtwin 2009-08-13 05:59:47

+0

本质上,在搜索结果中,搜索结果中会包含id与搜索条件相关的集合。这些ID将是一个类别名称。我需要将id映射到名称,以便我可以编写一个友好的url。同样来自另一方面,传入的请求需要将名称映射回来。这需要在应用程序的生命周期中可用,并且不会经常更改,即几天甚至几周。 – mickyjtwin 2009-08-13 06:02:06

+1

听起来不像很多数据 - 有什么理由不能将它保存在内存中吗?或者你正在寻找其他设施? – serialhobbyist 2009-08-14 10:17:00

0

缓存是一个超级大的话题!如果您在Web项目中,则可以使用本地缓存。如果您在Windows环境中,您可以使用HttpContext.Current.Cache(尽管您并不需要在Windows应用程序中缓存)。如果您跨越多个Web服务器,那么您可以看看MemCached或MemCached Win32的强大功能。如果你不介意使用新的东西,你也可以看看Velocity(这是MS在缓存领域对MemCache过去几年的优势的回答)。

这里有您可能感兴趣的一些SO帖子:

System.Web.Caching vs. Enterprise Library Caching Block

Running a Asp.net website with MS SQL server - When should i worry about scalability?

相关问题