强制Coldfusion 8重新加载组件缓存吗?

问题描述 投票:0回答:3

ColdFusion 8正在缓存我的cfcs。发展停滞不前。我无权访问管理面板。我有什么选择?

coldfusion coldfusion-8
3个回答
2
投票

1)访问CF Administrator。

真的。我不想在任何我无法控制的地方进行托管。

2)以编程方式清除缓存。

使用管理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() />

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?reinit = 1调用cfm页面3.观察cfc中的更改是否得到反映。

希望有帮助...


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个类似站点中)只是不会清除应用程序范围组件,而旧版本仍以某种方式保留在缓存中。

© www.soinside.com 2019 - 2024. All rights reserved.