如果你必须在 dev 中有缓存,你可以做我做的事情:
首先在 onRequest() 方法的顶部检查 URL 标志,该方法将调用 onApplicationStart() 方法:
<cfif IsDefined("URL.dev")>
<cflock timeout="5" scope="Session" type="Exclusive">
<cfif URL.dev EQ true>
<cfset SESSION.debug = true />
<cfelse>
<cfset StructDelete(SESSION, "debug") />
</cfif>
</cflock>
</cfif>
<cflock timeout="5" scope="Session" type="Readonly">
<cfif IsDefined("URL.appreset") or IsDefined("SESSION.dev")>
<cfset StructClear(SESSION) />
<cfset onApplicationStart() />
</cfif>
</cflock>
这将解决您的大部分问题。但是,如果您正在加载的类中出现问题,那么它就不足以检查该标志。我为此使用的解决方案:
将以下内容添加到 onError() 方法的底部:
<cfif IsDefined("APPLICATION")>
<cfset StructClear(APPLICATION) />
</cfif>
最后,您要检查 APPLICATION 对象是否存在,以及您声明为 APPLICATION 范围一部分的每个类是否存在,或者您要调用 onApplicationStart()。为此,请在 onRequestStart() 顶部的第一个代码块下方添加以下内容:
<cfif not IsDefined("APPLICATION")
OR not StructKeyExists(APPLICATION, "[ClassName1]")
OR not StructKeyExists(APPLICATION, "[ClassName2]")
...>
<cfset onApplicationStart() />
</cfif>