2016-04-21 2 views
2

Итак, я только что провел последние 6-8 недель в сорняках Умбрако и сделал некоторые исправления/улучшения на нашем сайте и в других средах. Я потратил много времени, пытаясь исправить проблемы кэширования более низкого уровня Umbraco. Теперь размышляя о моем опыте, и я до сих пор не имеют понятия, что концептуальные различия между следующими:Различия в структуре кеша Umbraco?

  • Исследовать индексирует
  • umbraco.config
  • кэшированный файл XML в памяти (якобы похож на Umbraco .config)
  • CMSContentXML Таблица

Еще раз спасибо,

Девин

ответ

5

Изучением индексов являются показателем содержания Umbraco

Так что, когда-либо создавать/обновлять/удалять содержание, текущее содержание информации будет индексироваться

Этого индекс клавиатура используется для поиска - под капотом, это Lucene индекс Umbraco бэкенд использовать этот индекс для поиска

вы можете создать свой собственный индекс, если вы хотите

более информации checkout, Overview & Explanation - "Examining Examine by Peter Gregory"

umbraco.config и кэшированный xml в памяти - это действительно то же самое.

Передний конец UmbracoHelper апи получить содержимое из кэша не базы данных - кэш из umbraco.config

CMSContentXML содержит информацию содержания каждого в качестве XML

так в основном это XML представляет все информация о содержании узла

Таким образом, в двух словах, они представляют собой на самом деле 3 вещи:

  1. EXAMINE используется для поиска
  2. umbraco.config кэшировать данные - сохранить путешествие туда и обратно к БД
  3. CMSContentXML хранит полную информацию о содержании

Edit включать в себя более разъяснения Роберт Фостер комментарий и UmbracoHelper против ExamineManager

Для umbraco.config и CMSContentXML стол, @ роберт-приемная прокомментировал

umbraco.config хранит самую последнюю версию всего опубликованного контента; кеш в памяти - это кешированная версия этого файла; а таблица cmscontentxml хранит представление всего содержимого и используется в основном для режима предварительного просмотра - он обновляется каждый раз, когда элемент контента сохраняется. IIRC он также хранит представление других типов контента

Привет UmbracoHelper против ExamineManager

UmbracoHelper апи главным образом получить его содержимое из кэш-памяти - IMO это лучше всего работает при поиске прямого содержания, например, когда вы знаете идентификатор контента, который вы хотите, вы просто позвоните по номеру Umbraco.TypedContent(id)

Но где вы получаете идентификатор, который хотите в первую очередь? или по-другому, скажем, если вы хотите найти все содержимое свойства Title, которое содержит слово «Test», то вы бы использовали Examine для его поиска. Потому что Examin действительно lucene wrapper, так что это будет быстро и эффективно

Хотя вы можете перемещаться по дереву с помощью метода, например Umbraco.TypedContent(id).Children, тогда используйте linq для фильтрации результата, но я думаю, что это делается в памяти с использованием linq-to -объект, так что это не так эффективно, и продвижение по службе, как Lucene

так что лично я думаю:

  1. использование Исследовать при поиске (местонахождение) для содержания - потому что вы можете использовать возможности надлежащего поиска двигатель lucene
  2. после того, как вы получили идентификаторы от e search, используйте UmbracoHelper, чтобы получить полное представление контента контента идентификатора содержимого в сильную модель модели и работать с данными.

Одно замечание @ robert-foster в комментарии, которое я не знал, это то, что UmbracoHelper предоставляет метод поиска, который является оберткой вокруг проверки, поэтому используйте это, если вы более знакомы с этим api.

Наконец, если какое-либо из приведенных выше утверждений неверно или не так правильно, помогите мне уточнить, чтобы кто-нибудь посмотрел на него позже, не получится ошибочным, спасибо всем.

+1

Могу ли я подтолкнуть вас и отредактировать/«больше информации» для лучшего ответа. Добавить 4-ю пулю о том, как таблицы в UmbracoDB встроены в XML, который хранится в CMSContentXML. Также более подробное объяснение UmbracoHelper vs ExamineManager, потому что они оба «ищут» данные. –

+0

@Alan У вас почти все было правильно - umbraco.config хранит самую последнюю версию всего опубликованного контента; кеш в памяти - это кешированная версия этого файла; а таблица cmscontentxml хранит представление всего содержимого и используется в основном для режима предварительного просмотра - он обновляется каждый раз, когда элемент контента сохраняется. IIRC также хранит представление других типов контента. –

+0

@Devin думает о UmbracoHelper как интерфейсе репозитория для запроса опубликованного кеша - он может извлекать узлы по id или положению и ходить по дереву; и его метод поиска - это метод удобства, обернутый вокруг Examine. Если вы хотите выполнить более сложные поисковые запросы, вы, вероятно, захотите напрямую использовать проверку; особенно если вы используете пользовательские индексы. –

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