ColdFusion 8正在缓存我的cfcs。发展处于停滞状态。我无法访问管理面板。我有什么选择?
答案 0 :(得分:2)
真。我不想在任何我无法控制的地方举办任何活动
使用Admin API:
createObject("component","cfide.adminapi.runtime").clearTrustedCache()
当然,如果您无法访问CFAdmin,您可能也无法访问它,但值得尝试。
根据this blog entry from Ray Camden,您需要在运行上述命令之前通过API登录管理员,这当然表明如果没有访问权限,它将无法运行。
<cfset API = createObject("component","cfide.adminapi.runtime") />
<cfset API.login(adminPassword="password") />
<cfset API.clearTrustedCache() />
答案 1 :(得分:0)
我使用application.cfc清除所有cfc缓存。
<!--- *****************************************************************
Run before the request is processed
************************************************************--->
<cffunction name="onRequestStart" returnType="boolean" output="false">
<cfargument name="thePage" type="string" required="true">
<cfscript>
if (structKeyExists(url,'reinit')) {
structClear(application);
structClear(session);
onApplicationStart();
onSessionStart();
}
</cfscript>
<cfreturn true>
</cffunction>
这个想法是传递一个名为“reinit”的url变量。只要在URL中定义了此变量,就会启动应用程序。
为了测试这个: 1.改变cfc 2.通过xxx.cfm调用cfm页面?reinit = 1 3.观察反映cfc的变化。
希望它有所帮助...答案 2 :(得分:0)
我知道这篇文章很旧,但是我需要针对(更现代的)ColdFusion(2016)版本执行此操作,而Peter的答案将不适用于CF 2016。较新版本的CF的脚注。
以下是可与CF 2016一起使用的版本:
<cfscript>
variables['adminPW'] = "my cf admin password";
cfAdminAPIAdmin = createObject("component", "cfide.adminapi.administrator");
cfAdminAPIAdmin.login(variables.adminPW);
cfAdminAPIRuntime = createObject("component", "cfide.adminapi.runtime");
// clear the component and trusted (template) caches
cfAdminAPIRuntime.clearComponentCache();
cfAdminAPIRuntime.clearTrustedCache();
</cfscript>
Adobe似乎已将CF管理员功能与运行时组件分开。那确实是唯一的区别。上面的版本还显示了如何清除组件缓存。
注意:我所做的事情与CFNinja的回答非常相似,但是一个站点(大约25个类似站点中的一个)只是不会清除应用程序范围的组件,而旧版本仍然以某种方式保留在缓存中。