我们在我们的Web应用程序中生成报告,方法是查询我们的sql服务器以xml形式返回的数据,然后使用xslt处理以创建最终输出。 为了加速系统,我们从返回的sql xml中移除了所有的静态信息,并缓存了一个包含所有静态信息的大型XDocument。在执行xsl转换之前,我们将带有静态信息的XDocument附加到来自sql server的xml的末尾。静态XDocument约为50Meg,需要几秒钟才能从sql server中构建。为asp.net网站缓存大对象
我们的问题是,一旦我们开始缓存这些大型XDoc中的一些,我们就达到了缓存专用字节的限制大小,并清除了缓存。在人们运行报表时重建这些XDocuments太耗时。我还没有尝试将这些XDoc保存到物理文件中,因为它们对于每天持续发生的每个报告运行都是必需的。
我想过安装AppFabric Cache,但我不确定将5到10个这样的大项存储在它里面是个好主意。
任何想法?如果我在Web服务器上安装更多的内存,它是否会自动提供给asp.net用于更大的缓存?我已经尝试过在将数据存储在缓存中之前对数据进行压缩(缩小5倍),但解压缩数据并重新解析XDocument会减慢服务器的速度。
为什么不在数据库上使用简单的自定义缓存?或者将它们保存为磁盘上的文件(更好),并使用处理程序将这些文件从用户下载。 – Aristos 2012-03-24 00:32:33
@Aristos用户不会下载静态数据,它将与来自sql server的xml相结合,然后通过xslt进行处理以创建报告输出。我可以将数据保存在磁盘上,但是我需要通过XDocument.Load()为每个报告加载它。认为必须有更快的方式。 – Wavel 2012-03-24 18:02:52
使用真正的快速序列化类,如http://code.google.com/p/protobuf-net/ – Aristos 2012-03-24 18:07:27