2017-02-16 13 views
2

모듈을 사용하여 ColdBox 응용 프로그램을 개발하고 있으며 캐싱 기능을 사용하여 일정 시간 동안보기를 캐시합니다.ColdBox 응용 프로그램에서 renderView()의 cacheTimeout 설정이 효과가없는 이유는 무엇입니까?

component{ 
    property name="moduleConfig" inject="coldbox:moduleConfig:mymodule"; 

    ... 

    function widget(event, rc, prc){ 
    var viewData = this.getData(); 

    return renderView(
     view = "main/widget", 
     args = viewData, 
     cache = true, 
     cacheSuffix = ":" & moduleConfig.entryPoint, 
     cacheTimeout = 2 
    ); 
    } 
} 

나는 나의 Cachebox.cfc에 다음 정보를 추가하여 기본 캐싱 설정을 설정하기 위해 노력하고 위의 코드에서 cacheTimeout 제거 :

cacheBox = { 
    defaultCache = { 
    objectDefaultTimeout = 1, //two hours default 
    objectDefaultLastAccessTimeout = 1, //30 minutes idle time 
    useLastAccessTimeouts = false, 
    reapFrequency = 5, 
    freeMemoryPercentageThreshold = 0, 
    evictionPolicy = "LRU", 
    evictCount = 1, 
    maxObjects = 300, 
    objectStore = "ConcurrentStore", //guaranteed objects 
    coldboxEnabled = false 
    }, 

    caches = { 
    // Named cache for all coldbox event and view template caching 
    template = { 
     provider = "coldbox.system.cache.providers.CacheBoxColdBoxProvider", 
     properties = { 
     objectDefaultTimeout = 1, 
     objectDefaultLastAccessTimeout = 1, 
     useLastAccessTimeouts = false, 
     reapFrequency = 5, 
     freeMemoryPercentageThreshold = 0, 
     evictionPolicy = "LRU", 
     evictCount = 2, 
     maxObjects = 300, 
     objectStore = "ConcurrentSoftReferenceStore" //memory sensitive 
     } 
    } 
    } 
}; 

비록 어떤을하지 않았다 캐싱에 대한 영향. 또한 Coldbox.cfc에 위의 설정을 추가하려고했습니다.

내가 coldbox create app MyApp를 통해 CommandBox를 통해 완전히 새로운 테스트 응용 프로그램을 만들 경우에도, 그 다음 1 분에 Cachebox.cfc의 캐싱을 설정, Coldbox.cfc에 viewCaching = true을 설정하고 Main.cfc에 event.setView(view="main/index", cache=true)을 설정, 그것은 아무튼 예상대로 작동하지 않습니다.

내가하는 일과 관계없이보기는 항상 최소 5 분 동안 캐시됩니다.

누락 된 것이 있습니까?

+0

보기가 캐시되는 시간은 어떻게 확인합니까? –

+0

이 질문은 CFML 여유 시간 팀에서 교차 게시 된 것이므로 거기에 답장을 보았습니다 (복제 할 수 없음). 귀하의 문제가 무엇인지 파악한 후, SO가 이전의 Q & A에 정말로 적합하므로 여기에서 답변을 업데이트 할 수 있습니다. –

답변

1

ColdBox 구성에서보기 캐싱을 사용하도록 설정했는지 확인하십시오. /config/ColdBox.cfc 파일로 이동하여이 키를 추가

또한
coldbox = { 
    // Activate view caching 
    viewCaching = true 
} 

, 당신은 당신이 위의 캐싱 변경된 CFC의 이름을 잘못 입력 했습니까? 변경 사항은 /config/ColdBox.cfc이 아닌 /config/CacheBox.cfc 파일에 있어야합니다.

+0

아니요, 'viewCaching = true'는이를 변경하지 않습니다. 나는 처음에는'/ config/Cachebox.cfc'에 설정을 가지고 테스트를 위해'/ config/Coldbox.cfc'로 옮겼습니다. 보기는 항상 5 분 동안 캐시됩니다. 그 정보로 내 질문을 업데이트했습니다. –

0

/config/ColdBox.cfcreapFrequency도 캐시 항목을 더 일찍 제거하기 위해 더 작은 값으로 설정해야합니다.

있지만, documentation states과 같이 분의 지연이 캐시 거두 생산

(보장하지 않음)

캐시 아이템이 정말 그 시간 후에 제거하지는 않습니다 reapFrequency1으로 설정된 경우에도 3 분 후에 캐시가 비어있을 수 있습니다.