2008-10-24 18 views
12

Ich habe mich gefragt, ob ich meine eigenen Sitzungen (mehr für eine Übung als alles andere) für eine GAE-App, an der ich arbeite, durchführen wollte ... Zuerst dachte ich daran, den Datenspeicher zum Speichern der Sitzungsdaten zu verwenden. Jedes Mal, wenn dem Session-Bucket etwas hinzugefügt werden muss, muss dies jedoch im Datenspeicher gespeichert werden. Offensichtlich ist das schlecht, weil wir unsere Schreibvorgänge minimieren wollen. Dann habe ich über die Verwendung von Memcache nachgedacht ... schien eine gute Idee zu sein, aber dann sind wir mit Problemen der möglichen Sitzungsbeschädigung konfrontiert, da Memcache von Google durch Speicherdruck "geräumt" wird. So bedeutet, dass wir links nur mit den folgenden Optionen:Wie effektiv Sitzungen in GAE implementieren?

  1. Speicherung aller Sitzungsdaten in Cookies
  2. Schreiben alle Sitzungsdaten an Datenspeicher und memcache, und dann nur das Lesen von memcache

Jedermann Hast du noch andere Ideen?

Antwort

3

Ich schlage vor, Check-out (und einen Beitrag zu) diese drei Implementierungen von appengine Sitzungen, bevor Sie Ihren eigenen Ausrollen:

Ihre Optionen sehen gut aus Die Auswahl zwischen ihnen hängt jedoch wahrscheinlich von der Größe der Sitzungsdaten in Ihrer Anwendung ab.

+1

@Alexander Kojevnikov: Sieht aus wie appengine-Dienstprogramme Link gebrochen ist. –

+0

@Brian: Fest, danke! –

+2

Eine andere zu betrachten: [gae-sessions] (http://wiki.github.com/dound/gae-sessions) ist die schnellste und einfachste verfügbare Implementierung. Einen Vergleich der verfügbaren Bibliotheken finden Sie hier: http://wiki.github.com/dound/gae-sessions/comparison-with-alternative-libraries –

0

Wenn Sie web2py (Version 1.46 oder letzteres) verwenden, sind Sitzungen standardmäßig auf GAE aktiviert. Diese durch die folgenden drei Zeilen web2py Code an der Spitze des scaffoling Modell erreicht:

from gluon.contrib.gql import * 
db=GQLDB() 
session.connect(request,response,db=db) 

Hier ist ein Beispiel Aktion, die zählt:

def index(): 
    session.c=session.c+1 if session.c else 1 
    return dict(counter=session.c)