12

Windows Vista で実行される IIS を備えた独自の ColdFusion 8 サーバーを使用して、ラップトップで coldFusion アプリケーションを開発しています。私はかなり厄介な問題を抱えています。

問題は、CFC に変更を加えるたびに、ColdFusion アプリケーション サーバーを再起動しない限り、CFC への変更が反映されないように見えることです。Windows が ColdFusion Application Server サービスを再起動できないため、マシン全体を再起動する必要があることがよくあります。ColdFusion サーバーの cfc キャッシュをリセットするより良い方法はありますか?

これは、変更を加えた後、頻繁に再起動する必要があるだけで、多くの時間を浪費し始めています。どんな洞察も大歓迎です!

ありがとうございました!

4

8 に答える 8

10

アプリケーション、セッションスコープなど、ある種の永続的なスコープ内のオブジェクトとしてこれらを作成していることを保証します。開発中にこの問題を回避するために私が通常行っていることは、url パラメーターを作成し、application.cfm/cfc ファイル (またはオブジェクトを作成している場所) でそれを確認し、その url パラメーターが検出された場合はオブジェクトを再作成することです。

例:

<cfif NOT structKeyExists(application,"myObj") OR structKeyExists(url,"reinit")>
    <cfset application.myObj = createObject("component","path.to.cfc") />
</cfif>

もちろん、問題があるすべてのオブジェクトでこれを行う必要があります。

于 2010-02-18T18:54:17.867 に答える
1

これが他のバージョンの CF にもあるかどうかはわかりませんが、CF9 では ApplicationStop() を実行でき、CFApplication をリセットしてリロードします。

于 2010-02-11T21:58:05.610 に答える
0

たぶん、CFAdmin>Cachingの下の「Cleartemplatecache」ボタンを試してみてください。

これは以前私に起こりました。変更したファイルをCF登録するには、通常、ボタンを数回クリックする必要があります。

また、キャッシングの下のすべてのチェックを外してみてください。注:これは開発マシンに対してのみ行ってください!!!

于 2010-02-15T17:04:08.523 に答える
0

Coldfusion Administrator で、次のいずれかが有効 (チェック済み) になっていますか?

キャッシング > 信頼できるキャッシュ

キャッシュ > クラス ファイルの保存

于 2010-02-11T23:21:56.103 に答える
0

明白なことを尋ねるだけです: onApplicationStart からこれらの関数を呼び出していますか?

于 2010-02-12T21:31:45.153 に答える
0

私はまったく同じ問題を抱えていました。サーバーのサービスマネージャーを起動した後に変更が反映されない場合は、マシンを再起動する必要がありました。

私が (Administrator,Caching) で行うこと: 1. すべてのキャッシュ オプションのチェックを外しました 2. テキスト ボックスの値を「0」に設定しました 3. 開発中は (Administrator,Caching) ページを開いたままにします。変更をアップロードしても反映されません。「今すぐテンプレート キャッシュをクリア」をクリックします。

これは、CF8、Built In Web Server、XP で私のために働いているものです。

于 2010-04-28T12:35:27.007 に答える
0

開発者にキャッシュが必要な場合は、私が行うことを行うことができます。

まず、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>
于 2010-03-04T18:36:46.763 に答える