Вы должны определенно искать общую реализацию chache.Я не делаю C #, поэтому я не знаю ни одного решения на вашем языке.В Java я бы порекомендовал EHCache.
Кэширование гораздо сложнее, чем кажется на первый взгляд.Вот почему, вероятно, стоит полагаться на работу, проделанную другими.Некоторые проблемы, с которыми вы столкнетесь в какой-то момент, - это параллелизм, аннулирование кэша, время жизни, блокировка кэшей, управление кэшем (статистика, очистка кэшей, ...), переполнение на диск, распределенное кэширование, ...
Контроль за кэшем является обязательным.Вы должны увидеть, действительно ли используемая вами стратегия кэширования действительно дает хорошие результаты (попадания в кеш / ошибки кеша, процент использования кеша, ...). Вероятно, вам следует разделить кеш на несколько регионов, чтобы иметь возможность лучше контролировать кешИспользование.
В качестве примечания: пока вы кешируете свой XML после преобразования, вам, вероятно, следует хранить его строковое представление (а не дерево объектов).Это еще одно преобразование, которое нужно выполнить после кэша, так как вы, вероятно, все равно выводите его как String.И есть большая вероятность, что строковое представление займет меньше места (но, как всегда, измеряйте это, не поверьте мне на слово).