2
將部分文件部署到ColdFusion網站/應用程序後,今天上午我遇到了一個問題。作爲部署的一部分,我如何清除ColdFusion模板緩存?
我用一些新代碼更新了現有的CFC。該CFC有一個返回的實例化的對象的init()方法:
原始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>
在任何時間一個對象那擴展了這個名爲init()的CFC,它拋出了一個異常:
「從init函數返回的值不是MyObject類型的。」
在部署此更改的其他任何環境中都沒有發生此問題 - 僅在生產中。
修復它在ColdFusion Administrator中清除模板緩存的唯一一件事。
所以,我要麼尋找一種方法來防止這種情況發生在未來和/或當我部署文件時自動清除模板緩存的方法。
僅供參考,我目前使用Tortoise SVN部署文件。
注意,這將刷新整個服務器的信任的高速緩存,而不僅僅是單個應用程序。性能可能是該解決方案(或任何自動化解決方案)的考慮因素。 – nosilleg
您可能有更好的結果,只需停止/啓動緩存而不是實際清除緩存。我一直在發現,清理緩存與沉重的應用程序,特別是與常見的coldfusion框架將掛起一個實例實例。停止/啓動似乎具有與殺死服務器相同的效果。否則肖恩的回答正是我所建議的。 –