Мы создаем отчеты в нашем веб-приложении, запрашивая наш SQL-сервер для данных, возвращаемых как xml, а затем обрабатываем с помощью xslt для создания окончательного вывода. Как способ ускорить работу системы, мы удалили всю статическую информацию из возвращаемого sql xml и кэшировали большой XDocument со всей статической информацией в нем. Перед выполнением преобразования xsl мы добавляем XDocument со статической информацией в конец xml, который поступает из SQL-сервера. Статический XDocument составляет около 50 мегабайт и занимает много секунд для сборки с сервера sql.Кэширование больших объектов для веб-сайта asp.net
Наша проблема заключается в том, что после того, как мы начали кэшировать некоторые из этих больших XDoc, мы нажимаем ограничение на размер кеш-байтов и кеш был очищен. Восстановление этих XDocuments слишком много времени, чтобы делать, пока люди запускают отчеты. Я не пробовал сохранять эти XDocs в физический файл, потому что они необходимы для каждого запуска отчета, который происходит постоянно в течение дня.
Я думал об установке AppFabric Cache, но я не уверен, что отличная идея хранить от 5 до 10 таких больших предметов в нем.
Любые идеи? Если я установлю больше памяти на веб-сервере, будет ли она автоматически доступна для asp.net для большего кеша? Я попытался сжать данные перед сохранением их в кеше (сократился в 5 раз), но разжатие и повторная обработка XDocument замедляли работу сервера.
Почему бы не использовать простой пользовательский кэш в базе данных/или сохранить их в виде файлов на диске (лучше) и предоставить эти файлы для загрузки у пользователей с помощью обработчика. – Aristos
@Aristos Пользователь не загружает статические данные, он сочетается с xml, который исходит от SQL-сервера, а затем обрабатывается через xslt для создания вывода отчета. Я могу сохранить данные на диске, но затем мне нужно загрузить его через XDocument.Load() для каждого отчета. Думал, что должен быть более быстрый способ. – Wavel
сохраните на диск сериализованную версию конечного XDocument.Load(), используя настоящий быстрый класс сериализации, например http://code.google.com/p/protobuf-net/ – Aristos