2016-10-21 6 views
1

내 ratpack 응용 프로그램에 Pebble template 지원을 추가하고 있습니다. 한 가지 문제가 있습니다. 내 RendererSupport 인스턴스가 ratpack의 Blocking.get()을 사용해야합니까? PebbleEngine은 자체 캐시를 가지고 있기 때문에 디스크에서 템플릿 소스를로드 할 것인지 여부를 말할 수 없으므로 IO 작업 (가능한 경우)이됩니다. 템플릿 구현에서 핸들 막대를 보면 IO 작업에 대한 특별한 처리를 볼 수 없습니다.ratpack에서 템플릿로드 및 컴파일 : 차단 여부

제 질문은 : 잠재적 인 IO 관련 작업 (예 : 파일 시스템 또는 db 액세스)에 Blocking을 사용하는 것은 경험 법칙입니까 아니면 더 복잡한 규칙이 있습니까?

답변

1

페블의 캐시가 무기한 (핸들 바가 하나)이라면 래트 팩의 핸들 바에 대한 통합 작업과 동일하게 수행 할 수 있다고 말하고 싶습니다. 캐시에 의존하여 디스크의 템플릿을로드 할 수있는 코드를 스레드를 계산하십시오. 처음으로 템플릿을로드 할 때마다 (계산 스레드에서 블로킹 코드를 실행하기 때문에) 성능 저하가 발생하지만 캐시 범위가 증가하면 사라집니다.

트래커에는 템플릿을 사전 컴파일하여 시작시 캐시를 채우는 방식으로 Handlebars 통합에 대한 성능 저하를 없애는 데 목적이 있습니다.

+0

내가 정확히 생각하고있는 것이지만 100 % 확실하지는 않습니다. 감사! – leetwinski