2017-01-13 2 views
0

디버그 모드에서 Visual Studio 2015를 사용하고 진단 도구를 실행하고 있습니다.Umbraco GetDictionaryItem 작동 방법

음주 umbraco 항상 매번는 GetDictionaryItem을 사용하여 다시 데이터베이스에 여행 다음 Umbraco 버전은 7.5.3

내 질문은 무엇입니까?

내 스크린 샷에서 볼 수 있듯이 디버깅 할 때마다 이벤트가 데이터베이스에서 쿼리하고 있음을 보여주고있었습니다. 제발 누군가를 가르쳐주세요. enter image description here

답변

2

umbraco.library

감사

는 사용되지지고 - 사용하지 마십시오.

Umbraco.Field ("#의 aliasOfField")를 사용하여 사전 값을 얻으려면. 템플릿 섹션에서 그래픽 UI를 사용하여 테스트 할 수 있습니다. 왼쪽의 두 번째 아이콘은 사전 항목을 담당하는 아이콘입니다. XML 캐시에서 가져 오므로 데이터베이스에 ping을 수행하여 사이트에 값을 표시 할 필요가 없습니다.

enter image description here

데이터베이스 캐싱

Umbraco.Field()

은 (~/App_Data/Umbraco.config에서) 메모리에로드 게시 된 내용 XML 캐시를 사용하지만, 키가하지 않는 경우 Umbraco.GetDictionaryValue()는 데이터베이스에 접속합니다 이미 메모리 내장 캐시에 존재합니다. 처음으로 값을 검색하면 앱이 다시 시작되지 않는 한 후속 호출에 캐시를 사용해야합니다.

+0

실제로 값을 가져 와서 렌더링하기 전에 코드에서 값을 사용하려면'Umbraco.GetDictionaryValue ("aliasOfField")'를 사용할 수도 있습니다. 사실 Umbraco.Field()와 Umbraco.GetDictionaryValue() 모두 캐싱이 어떻게 작동하는지 궁금합니다. 나는 그것들이 또한 데이터베이스에 부딪쳤다는 인상하에 있었다. 사실입니까? 그렇지 않다면 값은 어떻게 캐시됩니까? – bowserm

+1

Umbraco.Field()는 ~/App_Data/Umbraco.config의 메모리에로드 된 게시 된 콘텐츠 캐시를 사용하지만 Umbraco.GetDictionaryValue()는 키가 메모리 캐시에 이미 존재하지 않기 때문에 데이터베이스에 충돌합니다. –

+0

@RobertFoster 내 대답을 편집하고 우리는 완벽한 응답을 갖습니다;) –