2017-01-13 4 views
0

Я использую Visual Studio 2015 в режиме отладки и запускает диагностический инструмент. Версия Umbraco является 7.5.3Как работает Umbraco GetDictionaryItem

Мой вопрос:

Do Umbraco всегда перенестись в базу данных каждый раз, когда его используют GetDictionaryItem?

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

enter image description here

ответ

2

umbraco.library устаревает - не использовать его.

Чтобы получить словарное значение, просто используйте Umbraco.Field ("# aliasOfField"). Вы можете протестировать его с помощью графического интерфейса в разделе шаблонов. Второй значок с левой стороны - тот, который отвечает за словарные статьи. Он извлекается из кеша XML, поэтому нет необходимости в базе данных ping для получения какой-либо ценности для представления на сайте.

enter image description here

Кэширование базы данных

Umbraco.Field() использует Опубликованное содержимое кэша XML загружается в память (из ~/App_Data/Umbraco.config), но Umbraco.GetDictionaryValue() ударит базу данных, если ключ не уже существуют в кэше в памяти. Как только он получает значение в первый раз, хотя, он должен использовать кеш для последующих вызовов, пока приложение не перезапускается.

+0

Вы также можете использовать 'Umbraco.GetDictionaryValue (« aliasOfField »)', если вы хотите фактически получить значение и работать с ним в коде перед его рендерингом. Мне действительно интересно, как кеширование работает как для Umbraco.Field(), так и для Umbraco.GetDictionaryValue(). У меня создалось впечатление, что они также попали в базу данных. Это правда? Если нет, как кэшируются значения? – bowserm

+1

Umbraco.Field() использует загруженный в память кеш опубликованного контента (из ~/App_Data/Umbraco.config), но Umbraco.GetDictionaryValue() попадет в базу данных _if_ ключ уже не существует в кэше в памяти. –

+0

@RobertFoster отредактируйте мой ответ, и у нас будет отличный ответ;) –