gpt4 book ai didi

c# - 转换后的 XML 在内存中缓存的缺点?

转载 作者:数据小太阳 更新时间:2023-10-29 02:04:23 25 4
gpt4 key购买 nike

我正在编写一个 Web 应用程序,它不断地从数据库中检索 XML“组件”,然后使用 XSLT 将它们转换为 XHTML。其中一些转换经常发生(例如,“侧边栏导航”组件针对相同的 XML 输出并在具有该侧边栏的每个页面上执行相同的 XSL 转换),因此我已经开始实现一些缓存来加快速度。

在我当前的解决方案中,在每个组件尝试执行转换之前,该组件使用静态 CacheManager 对象检查是否存在已转换 XML 的缓存版本。如果是这样,组件输出这个。如果没有,该组件将执行转换,然后将转换后的 XML 与 CacheManager 对象一起存储。

CacheManager 对象在内存中存储已缓存的已转换 XML(准确地说,在 Dictionary 中)。在我的本地开发环境中,这工作得很好,但我认为这可能不是一个可扩展性很强的解决方案。

将这些数据存储在内存中的潜在缺点是什么?我是否需要限制可以存储在这样的内存数据结构中的数据量?我是否应该为这种类型的缓存完全使用不同的数据存储?

最佳答案

正如您所怀疑的那样,明显的缺点是您的缓存可能会占用大量内存。您可能想要实现一个系统,当内存压力上升时,很少使用的项目会从缓存中“过期”。微软的Caching Application Block开箱即用,几乎可以实现您需要的一切。

您可能会遇到的另一个潜在(尽管不太可能)问题是挖掘缓存以查找所需内容的成本。在某些时候,继续生成您需要的内容而不是查看缓存可能会更快。我们至少在一个与非常大的缓存和非常便宜的操作相关的精确场景中遇到过这个问题。这不太可能发生,但有可能发生。

关于c# - 转换后的 XML 在内存中缓存的缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3515982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com