開発者にキャッシュが必要な場合は、私が行うことを行うことができます。
まず、onApplicationStart() メソッドを呼び出す onRequest() メソッドの先頭に URL フラグのチェックを入れます。
<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>