2013-03-28 3 views
5

Unser Website-Entwicklungsteam verwaltet viele Websites (jeweils mit einer anderen Vanity-URL) auf unserem INTRAnet. Wir möchten etwas implementieren (Code-Snippet), das einfach die Application.cfm/OnRequestEnd.cfm-Seite hinzufügen kann, die einen Datensatz in die Datenbank einfügen würde, die Dinge wie Seiten-, URL-, Querystring-, Userid-, usw.-Dinge protokolliert. Das Einfügen des Datensatzes ist keine große Sache. Was ich gerne wissen möchte, ist von einem Leistungsstandpunkt, was würden Sie alle empfehlen, damit wir nicht einen Engpass an Einsätzen in die Warteschlange stellen, wenn Mitarbeiter die verschiedenen Websites erreichen. Wir können jQuery nicht verwenden, da nicht jede Seite die gleiche Version von jQuery haben wird, so dass wir uns wirklich darauf beschränken, nur Coldfusion zu verwenden - denke ich.Website Usage Tracking mit Colfusion/JavaScript/Andere

Im Idealfall möchten wir in der Lage sein, eine Hauptverfolgungsdatei auf unserem Hauptserver zu erstellen und diese Datei von allen anderen Websites zu beziehen. Dann, wenn wir ein Update machen müssen, können wir eine globale Änderung vornehmen - ähnlich wie Google Analytics, nur nicht so viele Details.

Auf allen Seiten, die wir unterstützen, haben wir das Logo unserer Abteilung auf diesen Seiten. Ich habe darüber nachgedacht, einen Tracking-Prozess in das Laden des Bildes zu integrieren, ähnlich wie bei E-Mails.

Irgendwelche Gedanken dazu würden geschätzt, wenn Sie eine bessere Idee haben - ich bin ganz Ohr.

AKTUALISIERT
In Bezug auf die Bildverarbeitung, konnte ich nicht die Original-Link für das Tutorial von easycfm.com finden, aber ich fand, was die identischen Code hier zu sein scheint: http://www.experts-exchange.com/Software/Server_Software/Web_Servers/ColdFusion/A_2386-Track-your-Emails-using-coldfusion.html

+1

Custom-Tag auf Anfrage Ende ist wahrscheinlich Ihre beste Wette. – Busches

+0

Ich empfehle, cfthread für die Einsätze zu verwenden. –

+4

Warum zur Hölle hat jemand dafür gestimmt, das zu schließen ?! –

Antwort

0

Adam Camerons Antwort ist wahrscheinlich die Art, wie Sie gehen sollten. Außerdem würde ich vorschlagen, diese Datensätze in eine Tabelle ohne zusätzliche Indizes einzufügen. Dies führt dazu, dass die Einsätze sehr schnell sind. Dann können Sie einen geplanten Datenbankjob verwenden, um diese Daten in ein schönes normalisiertes Schema zu verschieben, das schnell analysiert werden kann.

Ich würde nicht mit JavaScript abschreiben, nur weil jede Website eine andere Version von JQuery haben wird. Die Leute waren immer noch in der Lage, Dinge vor der Existenz von JQuery zu erledigen, es ist nur eine JavaScript-Bibliothek. Es ist ein sehr einfaches JavaScript, das dynamisch eine Skriptdatei enthält, die auf Ihre Tracking-Datei mit den relevanten Parametern zeigt.

<script type="text/javascript"> 
    var script = document.createElement("script"); 
    var body = document.getElementsByTagName("body")[0]; 
    script.setAttribute("src", "http://www.yourdomain.com/trackingfile.cfm?" + yourparams); 
    body.appendChild(script); 
</script> 

Wie Sie sehen können, keine Notwendigkeit für JQuery.

+0

Ich lerne über CFC, so dass die Implementierung von Adams Lösung mich ein paar Tage brauchen wird, aber was ich aus dem kleinen Teil, mit dem ich gearbeitet habe, ersehen kann, ist ein guter - ich verstehe es nicht ganz noch. Mit Ihrem Ansatz, würde ich diesen Code-Ausschnitt auf www.domainA.com, www.domainB.com und www.DomainC.com setzen und dann würde das Skript alle auf meine zentralisierte zeigen (oder in NZ wäre es zentralisiert ** wink **) Server, www.maintrackingserver.com? – HPWD

+0

Es liegt ganz bei Ihnen. Da Sie mehrere Websites haben, um die Sie sich kümmern müssen, scheint es einfacher zu sein, eine Website zu haben, die sich um das Tracking kümmert, anstatt mehrere Stellen zu drucken. Das Beispiel, das ich Ihnen gegeben habe, funktioniert über Domains hinweg, so dass Sie beide Möglichkeiten haben. – baynezy

+0

Ich habe das ausgewählt, weil es genau das getan hat, was wir brauchten, und es war ziemlich schnell in unserer Entwicklungsumgebung zu implementieren, und die Ergebnisse waren genau richtig. Danke baynezy! – HPWD

6

Ich würde sagen, dass Sie Versuchen Sie nicht, dies vorzeitig zu optimieren, bis Sie einen Grund dazu haben. Wenn Sie feststellen, dass Sie ein Problem haben, können Sie damit fertig werden.

Erstellen Sie einen Protokollierungs-CFC und implementieren Sie eine Methode, die die Metriken empfängt, die Sie protokollieren möchten. Anschließend wird sie in einen Datensatz zum Einfügen in die DB und <cfquery> in eine DB-Tabelle geschrieben. Rufen Sie die Funktion von OnRequestEnd.cfm auf.

Ich empfehle insbesondere, dies in eine Protokollierung CFC zu rollen, denn wenn Sie die Implementierung von, wie Sie später Dinge protokollieren ändern müssen, können Sie nur die inneren Abläufe der Protokollierungsmethode ändern, anstatt sich mit all Ihren Websites .

+0

Ich bin mir nicht sicher, was Sie unter "vorzeitig optimieren" verstehen ? Um ein CFC zu verwenden, benötigen Sie nicht Application.cfc/OnRequestEnd.cfc oder ist Application.cfm/OnRequestEnd.cfm in Ordnung? – HPWD

+0

OK, zuerst: Wenn du einen Begriff siehst, den du nicht verstehst, kannst du ihn einfach googeln. Aber hier gehts: http://c2.com/cgi/wiki?PrematureOptimization. Zweitens, wenn Sie nicht wissen, wie Code funktionieren könnte, können Sie es ausprobieren * und herausfinden, ob Sie mit diesem Programm Ihre Fähigkeiten als Programmierer verbessern können. Es gibt jedoch keine Korrelation zwischen der Verwendung von CFCs und der Verwendung von Application.cfc, nein. –

+0

Wow: Ich schätze die Hilfe sehr, die Sie mir gegeben haben, und ich bin sehr vertraut mit Google-Begriffen, aber in den USA schreiben wir "optimieren" mit einem Z, also war ich mir nicht sicher, ob Ihr "Optimieren" etwas anderes bedeutet zur Verdeutlichung, mein Schlechter. – HPWD