12 Stimmen

ColdFusion Server CFC Caching Problem

Ich entwickle ColdFusion-Anwendungen auf meinem Laptop mit einem eigenen ColdFusion 8-Server mit IIS, der unter Windows Vista läuft. Ich habe ein ziemlich lästiges Problem.

Das Problem ist, dass, wann immer ich Änderungen an meinen CFCs vornehme, es scheint, dass die Änderungen an meinen CFCs nicht wirksam werden, solange ich meinen ColdFusion Application Server nicht neu starte. Oftmals muss ich meinen gesamten Rechner neu starten, weil Windows den ColdFusion Application Server-Dienst nicht neu starten kann. Gibt es eine bessere Möglichkeit, den CFC-Cache des ColdFusion-Servers zurückzusetzen?

Das fängt an, viel Zeit zu verschlingen, weil ich immer wieder neu starten muss, nachdem ich eine Änderung vorgenommen habe. Jede Einsicht würde sehr geschätzt werden!

Ich danke Ihnen!

0 Stimmen

Sind sie in Ihrem Anwendungsbereich? Ist die Option "Klassendateien speichern" unter Servereinstellungen > Caching aktiviert?

0 Stimmen

Speichern Sie sie in einem dauerhaften Bereich? Sitzung/Server/etc.?

0 Stimmen

Prüfen Sie unter Admin > Daten & Dienste > Webdienste, ob die cfcs sich selbst als Webdienste registrieren. Wenn ja, löschen Sie sie von diesem Bildschirm und sehen Sie, ob das hilft.

0voto

Eddie Punkte 4846

Versuchen Sie es vielleicht mit der Schaltfläche "Template-Cache löschen" unter CF Admin > Caching.

Das ist mir schon einmal passiert. Normalerweise muss ich mehrmals auf die Schaltfläche klicken, damit CF die geänderten Dateien registriert.

Versuchen Sie auch, alle Häkchen unter Caching zu entfernen. Hinweis: Tun Sie dies nur auf Entwicklungsmaschinen!!!

0 Stimmen

Ich danke Ihnen für Ihre Antwort. Ich habe es versucht, aber es hat nicht funktioniert. In der Vergangenheit hat das normalerweise nur bei meinen .cfm-Dateien funktioniert. Ich habe auch versucht, die Cache-Optionen zu aktivieren und wieder zu deaktivieren, ohne Erfolg :(. Es hört sich fast so an, als ob es ein ständiges Ärgernis sein wird, den CF-Applikationsserver neu zu starten, bis sich mein Unternehmen für ein Upgrade auf CF9 oder später entscheidet.

0voto

Shelby Spencer Punkte 1

Wenn Sie Caching in Dev haben müssen, können Sie tun, was ich tue:

Fügen Sie zunächst eine Prüfung auf ein URL-Flag an den Anfang Ihrer onRequest()-Methode, die die onApplicationStart()-Methode aufrufen wird:

<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>   

Damit werden die meisten Ihrer Probleme gelöst. Wenn Sie jedoch ein Problem in einer Klasse haben, die Sie gerade laden, wird sie nicht weit genug kommen, um nach diesem Flag zu suchen. Die Lösung, die ich in diesem Fall verwende:

Fügen Sie Folgendes am Ende Ihrer onError()-Methode hinzu:

<cfif IsDefined("APPLICATION")>
      <cfset StructClear(APPLICATION) />
</cfif>

Schließlich müssen Sie prüfen, ob das APPLICATION-Objekt existiert und ob jede Klasse, die Sie als Teil des APPLICATION-Bereichs deklarieren, existiert oder ob Sie onApplicationStart() aufrufen wollen. Fügen Sie dazu direkt unter dem ersten Codeblock am Anfang von onRequestStart() folgendes ein:

<cfif not IsDefined("APPLICATION")
    OR not StructKeyExists(APPLICATION, "[ClassName1]")
    OR not StructKeyExists(APPLICATION, "[ClassName2]")
    ...>
    <cfset onApplicationStart() />
</cfif>

0voto

Nich Punkte 41

Ich hatte genau das gleiche Problem, manchmal musste ich den Rechner neu starten, wenn die Änderungen nach dem Starten des Servers im Dienstmanager nicht übernommen wurden.

Was ich tue, ist, in (Administrator,Caching): 1. Ich habe alle Cache-Optionen deaktiviert 2. Ich setze die Werte der Textfelder auf "0". 3. Ich lasse die Seite (Administrator, Caching) bei der Entwicklung geöffnet, so dass ich, wenn ich eine Änderung hochlade und sie nicht übernommen wird, einfach auf "Template Cache jetzt löschen" klicken kann.

Das funktioniert bei mir auf CF8, Built In Web Server, XP.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X