2010-05-15 3 views
2

Итак, на нашем сайте мы используем SiteMap. Для каждого запроса мы выводим какое-то меню, и для этого делаем SiteMap.RootNode в вспомогательной функции.Как я могу использовать SiteMap более эффективно?

Теперь, когда я сделал профилирование моего сайта с помощью dotTrace, я увидел, что get_RootNode() принимает много о времени (около 70-75 миллисекунды). Но мы знаем, что SiteMap является статическим. Итак, я думаю, что каким-то образом я получу SiteMap.RootNode только один раз в Application_Start и получит доступ к этому через каждый запрос.

Итак, мои вопросы,

Является ли мой подход правильный? Как мне это сделать? Или есть эффективный способ, которым я могу воспользоваться SiteMap.RootNode

Спасибо.

+0

Вы используете собственный поставщик SiteMap? Поставщик по умолчанию кэшируется/оптимизирован, поэтому я должен предположить, что вы загружаете из базы данных или что-то еще? –

+0

Я использую поставщик mvcSiteMap. И я не загружаюсь из базы данных. У меня есть только одна веб-карта. – Bipul

ответ

0

По этой причине я избегал файлов Sitemap. Они в порядке до нескольких сотен страниц, но помимо этого производительность начнет ухудшаться.

Я думаю, что они предназначены для простого создания типа инструмента для небольших веб-сайтов или чего-то еще.

Я написал свои собственные cms и теоретически, если вы используете аналогичное cms/app, которое структурирует данные таким же образом, что вы сможете вывести свои списки меню из db за меньшее время, забрав всех детей из текущий идентификатор страницы/некоторая форма аналогичного контекстного запроса.

Вы можете (как я сказал) разбить ваши файлы Sitemap на более мелкие частичные карты, а затем вытащить списки меню из них, чтобы повысить производительность.

Если, однако, ваш сайт имеет менее 500 страниц, я бы поставил под вопрос кодировку ... это пользовательская карта сайта? Является ли провайдер ожидающим блокировки ресурсов или что-то еще?

Вы считаете, что вместо этого вы выбрали данные с помощью класса xmldocument? (просто мысль)

Смежные вопросы