Frage

Ich bin mit nginx und redis in meiner Website. Für mehrere Artikel auf meiner Seite, ich will Tracking params ihrer URLs hinzufügen, so dass, wenn ein Benutzer klickt auf ein Element, ich Statistiken der Benutzerverwendung außer dient der Inhalt Benutzer angefordert sammeln können. Ich bin auf der Suche nach Methoden, wie diese Statistiken in redis von nginx zu erfassen, das heißt, ohne die Hintergrundanwendung zu treffen.

Für zB., Nehme ich mehrere Reihen von Tabellen auf meiner Seite und jede Tabelle halten Elemente in Zeilen / Spalten-Format haben. Also, für ein Element in {Tabelle: 2, Reihe: 1, Spalte: 3}, wenn die tatsächliche URL ist: www.mysite.com/news/dodi, dann mag ich die URL einbetten: www.mysite.com/news / dodi / Tag = 29 & Delta; -Tabelle = 2 & row = 1 & Spalte = 3. Wenn der Benutzer darauf klickt, wird nginx redis trifft den Inhalt zu holen und die entsprechenden Statistiken aktualisieren (hier kann Schritt Tag-29 sein, auf dem Tisch 2, ...).

Jeder Vorschlag, wie ich dies zu erreichen, ohne den Hintergrund app zu schlagen?

War es hilfreich?

Lösung

Für die Tracking-Parameter, halten diese Art von Arbeit außerhalb des Geltungsbereichs der Nutzer verlangen. Sie machen sie nicht die Latenz Strafe für Statistiken zahlen Tracking. Cron ein Skript, dass extrahiert die Parameter aus access.log und Updates redis und / oder Datenbank.

Im Hinblick auf die Content-Caching gibt es eine kürzlich veröffentlichte nginx redis-Modul, das als Memcached-Modul in der gleichen Art und Weise funktioniert. Nur GET und SELECT werden derzeit umgesetzt. Die Annahme ist, dass die Anwendung der Cache bevölkert.

http://wiki.nginx.org/Nginx3rdPartyModules#HTTP_Redis_Module

Beispiel nginx.conf:

http
{
 ...
        server {
            location / {
                set $redis_db   "0";
                set $redis_key  "$uri?$args";
                redis_pass      127.0.0.1:6379;
                error_page      404 502 504 = @fallback;
             }

             location @fallback {
                 proxy_pass      backed;
             }
        }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top