2013-03-28 9 views
5

Nasz zespół ds. Rozwoju strony internetowej zarządza wieloma stronami internetowymi (każda ma inny próżny adres URL) w naszym INTRAnet. Chcielibyśmy zaimplementować coś (fragment kodu), który jest łatwy do dodania strony Application.cfm/OnRequestEnd.cfm, która wstawiłaby rekord do bazy danych, śledząc takie rzeczy jak strona, adres URL, zapytanie, identyfikator itd. - podstawowe informacje. Wstawianie płyty nie jest wielką sprawą. Co chciałbym wiedzieć, to z punktu widzenia wydajności, co wszyscy polecilibyście, abyśmy nie dostali wąskiego gardła wstawek w kolejce, gdy pracownicy trafiali na różne strony. Nie możemy używać jQuery, ponieważ nie każda strona będzie miała tę samą wersję jQuery, więc naprawdę jesteśmy ograniczeni do używania Coldfusion - myślę.Śledzenie użycia strony za pomocą Colfusion/JavaScript/Other

Najlepiej byłoby, gdybyśmy stworzyli jeden główny plik śledzenia na naszym głównym serwerze i wskazali ten plik ze wszystkich naszych innych witryn. Następnie, jeśli/kiedy musimy dokonać aktualizacji, możemy dokonać globalnej zmiany - coś w rodzaju działania Google Analytics, a nie prawie tyle szczegółów.

We wszystkich serwisach, które obsługujemy, na naszych stronach znajduje się logo naszego oddziału. Zastanowiłem się nad stworzeniem procesu śledzenia wczytywania obrazu, podobnie jak w przypadku e-maili.

Wszelkie przemyślenia na ten temat będą mile widziane, jeśli masz lepszy pomysł - jestem uszy.

AKTUALIZACJA
odniesieniu do przetwarzania obrazu, nie mogłem znaleźć oryginalny link do poradnika z easycfm.com ale znalazłem to, co wydaje się być identyczny kod tutaj: http://www.experts-exchange.com/Software/Server_Software/Web_Servers/ColdFusion/A_2386-Track-your-Emails-using-coldfusion.html

+1

Niestandardowy tag na końcu żądania jest prawdopodobnie najlepszym wyborem. – Busches

+0

Sugeruję użycie cfthread dla wstawek. –

+4

Dlaczego, u diabła, ktoś zagłosował, żeby to zamknąć ?! –

Odpowiedz

0

Odpowiedź Adama Camerona brzmi prawdopodobnie tak, jak powinieneś pójść. Co więcej, sugerowałbym wstawienie tych rekordów do tabeli bez dodatkowych indeksów. To spowoduje, że wkładki będą bardzo szybkie. Następnie można użyć zaplanowanego zadania bazy danych, aby przenieść te dane do ładnego znormalizowanego schematu, który można szybko przeanalizować.

Nie zapisałbym się używając JavaScriptu tylko dlatego, że każda strona będzie miała inną wersję JQuery. Ludzie nadal potrafili robić rzeczy przed pojawieniem się JQuery, jest to tylko biblioteka JavaScript. Jest to bardzo prosty skrypt JavaScript, który zawiera dynamicznie dołączony plik skryptu, który wskazuje na plik śledzenia z odpowiednimi parametrami.

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

Jak widać, nie ma potrzeby korzystania z JQuery.

+0

Uczę się o CFC, więc wdrożenie rozwiązania Adama zajmie mi kilka dni, ale to, co widzę z tego, z którym pracowałem, jego podejście jest dobre - po prostu nie w pełni to rozumiem jeszcze. Przy twoim podejściu wstawiłbym ten fragment kodu na www.domainA.com, www.domainB.com i www.DomainC.com, a następnie skrypt wskaże mój scentralizowany (lub w NZ będzie scentralizowany ** mrugnięcie **) serwer, www.maintrackingserver.com? – HPWD

+0

To wszystko zależy od Ciebie. Ponieważ masz kilka witryn, którymi się opiekujesz, wydaje się, że łatwiej jest mieć jedną witrynę, która zajmuje się śledzeniem, zamiast drukować je w kilku miejscach. Przykład, który Ci podałem, będzie działał w różnych domenach, więc masz obie opcje. – baynezy

+0

Wybrałem to, ponieważ zrobiło to dokładnie to, czego potrzebowaliśmy i było dość szybkie do wdrożenia w naszym środowisku programistycznym, a wyniki były natychmiastowe. Dzięki, baynezy! – HPWD

6

Powiedziałbym, że nie powinni próbować przedwcześnie optymalizować tego, dopóki nie masz powodu. Jeśli zauważysz, że masz problem na torze, możesz sobie z tym poradzić.

Utwórz rejestrację CFC i zaimplementuj metodę, która otrzyma metryki, które chcesz zarejestrować, a następnie opakuje je w rekord, aby wstawić do bazy danych, i użyj <cfquery>, aby zapisać je w tabeli DB. Wywołaj funkcję z OnRequestEnd.cfm.

Sugeruję, aby włączyć tę funkcję do rejestrowania CFC, ponieważ jeśli zajdzie potrzeba zmiany implementacji sposobu rejestrowania danych w późniejszym czasie, można po prostu zmienić wewnętrzne działanie metody rejestrowania, zamiast zajmować się wszystkimi witrynami. .

+0

Nie jestem pewien, co masz na myśli przez "przedwczesną optymalizację". Czy możesz opracować ? Ponadto, aby używać CFC, nie musisz mieć Application.cfc/OnRequestEnd.cfc lub App.cfm/OnRequestEnd.cfm w porządku? – HPWD

+0

OK, po pierwsze: jeśli widzisz termin, którego nie rozumiesz, możesz po prostu go otworzyć. Ale oto: http://c2.com/cgi/wiki?PrematureOptimization. Po drugie, jeśli nie wiesz, jak jakiś kod może działać, możesz * wypróbować i dowiedzieć się * (zastosowanie tego podejścia poprawi twoje możliwości jako programisty). Jednak nie ma żadnej korelacji między używaniem CFC a użyciem Application.cfc, no. –

+0

Wow: Szczerze doceniam pomoc, którą mi podaliście, i bardzo dobrze znam terminy, które można znaleźć w Google, ale w USA oznaczamy "optymalizowanie" za pomocą Z, więc nie byłem pewien, czy "optymalizacja" oznacza coś innego, więc zapytałem dla wyjaśnienia, moje złe. – HPWD