我們在我們的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