2012-05-16 8 views
2

일부 파일을 ColdFusion 웹 사이트/응용 프로그램에 배포 한 후 오늘 아침에 문제가 발생했습니다.배포의 일부로 ColdFusion 템플릿 캐시를 지우려면 어떻게합니까?

기존 CFC를 새로운 코드로 업데이트했습니다.

원래 MyObject.cfc :

<cfscript> 
    VARIABLES.MyParam = ""; 
</cfscript> 

<cffunction name="init" returntype="MyObject" output="false"> 
    <cfargument name="MyParam" type="String" required="true" /> 

    <cfscript> 
     VARIABLES.MyParam = ARGUMENTS.MyParam; 

     return THIS; 
    </cfscript> 
</cffunction> 

새로운 MyObject.cfc : 객체

<cfscript> 
    VARIABLES.MyParam = ""; 
</cfscript> 

<cffunction name="init" returntype="MyObject" output="false"> 
    <cfargument name="MyParam" type="String" required="true" /> 

    <cfscript> 
     setMyParam(ARGUMENTS.MyParam); 

     return THIS; 
    </cfscript> 
</cffunction> 

<cffunction name="setMyParam" output="false" returntype="Void"> 
    <cfargument name="MyParam" type="String" required="true" /> 

    <cfset VARIABLES.MyParam = Trim(ARGUMENTS.MyParam) /> 
</cffunction> 

<cffunction name="getMyParam" output="false" returntype="String"> 
    <cfreturn VARIABLES.MyParam /> 
</cffunction> 

모든 시간 CFC는 인스턴스화 된 객체를 반환하는 초기화() 메소드가 있습니다 init()라는이 CFC가 확장되어 예외가 발생했습니다.

"init 함수에서 반환 된 값의 형식이 MyObject가 아닙니다."

이 변경 사항이 배포 된 다른 환경에서는이 문제가 발생하지 않았습니다 - 프로덕션에서만 발생했습니다.

유일한 문제는 ColdFusion Administrator에서 템플릿 캐시를 지우는 것이 었습니다.

그래서 앞으로 파일이 배포되지 않도록 자동으로 템플릿 캐시를 지우는 방법을 찾고 있습니다.

참고로 현재 Tortoise SVN을 사용하여 파일을 배포합니다.

이 기능은 CF7로까지 거슬러 자리에있었습니다
<cfscript> 

    // Login is always required (if the administrator password 
    // is enabled in the ColdFusion Administrator). 
    // This example uses two lines of code. 

    adminObj = createObject("component","cfide.adminapi.administrator"); 
    adminObj.login("admin"); 

    // Instantiate the runtime object. 
    myObj = createObject("component","cfide.adminapi.runtime"); 

    // clear cache 
    myObj.clearTrustedCache(); 

    // Stop and restart trusted cache. However, only the clearTrustedCache function needs to be called. 
    myObj.setCacheProperty("TrustedCache", 0); 
    myObj.setCacheProperty("TrustedCache", 1); 
</cfscript> 

(: 당신의 초기화에

답변

3

() (또는 더 바람직하게는, 또 다른 재 장전 스타일의 방법), 프로그램 관리자 API의 clearTrustedCache() 메소드를 호출 Source). 이를 위해서는 CF Admin 암호가 필요합니다. 이 전체 서버에 대한 신뢰할 수있는 캐시 만이 아니라 개별 응용 프로그램을 플러시 것

myObj.clearComponentCache(); 
+0

참고 : 당신이 당신의 관리자에서 활성화 해당 옵션이있는 경우

은 또한, 구성 요소 캐시를 삭제 추천 할 것입니다. 성능은이 솔루션 (또는 모든 자동화 된 솔루션)의 고려 사항 일 수 있습니다. – nosilleg

+0

더 나은 결과를 얻으려면 실제로 캐시를 지우지 말고 단순히 캐시를 중지하거나 시작하십시오. 나는 특히 일반적인 coldfusion 프레임 워크를 사용하여 무거운 응용 프로그램으로 캐시를 지우면 인스턴스 인스턴스가 멈추는 것을 발견했습니다. 중지/시작은 서버를 종료하지 않고 동일한 효과를 갖는 것으로 보입니다. 그렇지 않으면 숀의 반응은 제가 제안 할 것입니다. –

관련 문제