django-cachebot

Software screenshot:
django-cachebot
Software informatie:
Versie: 0.4.1
Upload datum: 11 May 15
Ontwikkelaar: David Ziegler
Licentie: Gratis
Populariteit: 11

Rating: 3.0/5 (Total Votes: 1)

Django-cachebot is een Django app die geautomatiseerde caching en nietigverklaring biedt.
installatie
& Nbsp; 1. easy_install django-cachebot of pip django-cachebot installeren
& Nbsp; 2.
& Nbsp; cachebot toevoegen aan je INSTALLED_APPS
& Nbsp; 3.
& Nbsp; Stel een cache backend naar één van de backends in cachebots.backends, bijvoorbeeld:
& Nbsp; CACHE_BACKEND = 'cachebot.backends.memcached:? //127.0.0.1: 11211 / timeout = 0'
Huidige ondersteunde backends zijn:
cachebot.backends.dummy
cachebot.backends.memcached
cachebot.backends.pylibmcd
Cachebot aap patcht de standaard Django manager en queryset te CacheBotManager en CachedQuerySet de standaardinstellingen gebruikt door uw Django project te maken.
Gebruik
Stel dat u een query die eruit zag als deze had en je wilde het cachen:
Photo.objects.filter (user = gebruiker, status = 2)
Add .cache () alleen maar om de queryset keten als volgt:
Photo.objects.cache (). Filteren (user = gebruiker, status = 2)
Deze vraag zal ongeldig krijgen als een van de volgende voorwaarden wordt voldaan:
1. Een geretourneerd door de query objecten wordt gewijzigd.
2. De gebruiker wordt gewijzigd.
3. Een foto is gewijzigd en heeft de status = 2.
4. Een foto wordt gewijzigd en heeft user = gebruiker.
Deze ongeldigverklaring criteria is waarschijnlijk te voorzichtig, omdat we niet willen deze cache ongeldig maken elke keer dat een foto met status = 2 is opgeslagen. Te fine-tunen van de ongeldigverklaring criteria, kunnen we opgeven om alleen te vervallen op bepaalde terreinen. Bijvoorbeeld:
Photo.objects.cache ("gebruiker"). Filteren (user = gebruiker, status = 2)
Deze vraag zal ongeldig krijgen als een van de volgende voorwaarden wordt voldaan:
1. Een geretourneerd door de query objecten wordt gewijzigd.
2. De gebruiker wordt gewijzigd.
3. Een foto wordt gewijzigd en heeft user = gebruiker.
django-cachebot kunnen ook handvat select_related, vooruit relaties, en omgekeerde relaties, dat wil zeggen:
Photo.objects.select_related (). Cache ("gebruiker"). Filteren (user__username = "David", status = 2)
Photo.objects.cache ("gebruiker"). Filteren (user__username = "David", status = 2)
Photo.objects.cache ('message__sender'). Filteren (message__sender = gebruiker, status = 2)
Instellingen
CACHEBOT_CACHE_GET default: Valse
Als CACHEBOT_CACHE_GET = true, worden alle objects.get queries automatisch de cache. Dit kan worden overschreven bij de manager niveau als volgt:
class Foto's (models.Model):
& Nbsp; ...
& Nbsp; objecten = models.Manager (cache_get = True)
CACHEBOT_CACHE_ALL default: Valse
Als CACHEBOT_CACHE_ALL = true, worden alle vragen automatisch de cache. Dit kan worden overschreven bij de manager niveau als volgt:
class Foto's (models.Model):
& Nbsp; ...
& Nbsp; objecten = models.Manager (cache_all = True)
CACHE_PREFIX default: ''
Stel je hebt een ontwikkeling en productie server het delen van dezelfde memcached server. Normaal gesproken is dit een slecht idee omdat elke server kan worden overschrijven cache toetsen van de andere server. Als u CACHE_PREFIX toevoegen aan uw instellingen, worden alle cache sleutels die voorvoegsel toegevoegd aan hen, zodat u dit probleem kunt vermijden.
Waarschuwingen (belangrijk!)
& Nbsp; 1. django-cachebot vereist Django 1.2 of hoger
& Nbsp; 2. Het toevoegen / verwijderen van objecten met een ManyRelatedManager niet automatisch ongeldig. Dit is omdat de signalen voor deze soorten activiteiten niet in Django tot 1,2. Tot dan moet u deze vragen handmatig vervallen als volgt:
& Nbsp; van cachebot.signals importeren invalidate_object
& Nbsp; user.friends.add (vriend)
& Nbsp; invalidate_object (gebruiker)
& Nbsp; invalidate_object (vriend)
& Nbsp; 3. tel () queries zal niet gecached.
& Nbsp; 4. Als u ongeldig op een gebied dat in een bereik of uitsluiten query zal deze vragen te vervallen wanneer alles in de tabel verandert. Bijvoorbeeld het volgende zou krijgen ongeldig als er iets aan de gebruiker tafel veranderd:
& Nbsp;. Photo.objects.cache ("gebruiker") filteren (user__in = gebruikers, status = 2)
& Nbsp;. Photo.objects.cache ("gebruiker") uit te sluiten (user = gebruiker, status = 2)
& Nbsp; 5. U moet waarschijnlijk gebruik maken van een tool zoals django-memcache status te controleren op de status van uw cache. Als memcache te vol en begint te laten vallen toetsen, is het mogelijk dat uw vragen niet zou kunnen krijgen ongeldig.
& Nbsp; 6. .values_list () nog niet in de cache. Je moet iets doen als dit in plaats daarvan:
& Nbsp; [. Foto ['id'] voor de foto in Photo.objects.cache ("gebruiker") filteren (user = gebruiker) .values ​​("id")]
& Nbsp; 7. Het is mogelijk dat er rand gevallen die ik heb gemist. django-cachebot is nog in zijn kinderschoenen staat, dus je moet nog steeds dubbel check dat uw vragen worden steeds in de cache en ongeldig. . Laat het me weten als u een rare verschillen opmerken

Eisen

  • Python
  • Django

Andere software van ontwikkelaar David Ziegler

django-urlcrypt
django-urlcrypt

12 May 15

Reacties op django-cachebot

Reacties niet gevonden
Commentaar toe te voegen
Zet op de beelden!