django-cachebot

Software skärmdump:
django-cachebot
Mjukvaruinformation:
Version: 0.4.1
Ladda upp dagen: 11 May 15
Utvecklare: David Ziegler
Licens: Gratis
Popularitet: 11

Rating: 3.0/5 (Total Votes: 1)

django-cachebot är en Django app som ger automatiserad cachning och ogiltigförklarande.
Installation
& Nbsp; 1. easy_install django-cachebot eller PIP installera django-cachebot
& Nbsp; 2.
& Nbsp; Lägg cachebot dina INSTALLED_APPS
& Nbsp; 3.
& Nbsp; Ange en cache backend till en av de bakomliggande system i cachebots.backends, till exempel:
& Nbsp; CACHE_BACKEND = 'cachebot.backends.memcached:? //127.0.0.1: 11211 / timeout = 0'
Nuvarande implementationer som stöds är:
cachebot.backends.dummy
cachebot.backends.memcached
cachebot.backends.pylibmcd
Cachebot apa patchar standard Django manager och queryset att göra CacheBotManager och CachedQuerySet standardvärden används av Django projektet.
Användning
Anta att du hade en fråga som såg ut så här och du ville cache det:
Photo.objects.filter (user = användare, status = 2)
Bara lägga .cache () till queryset kedja som så:
Photo.objects.cache (). Filter (user = användare, status = 2)
Denna fråga kommer att få ogiltiga om något av följande villkor är uppfyllda:
1. En av de objekt som returneras av fråge ändras.
2. Användaren ändras.
3. Foto modifieras och har status = 2.
4. Foto modifieras och har user = användare.
Denna ogiltighetskriterier är förmodligen alltför försiktig, eftersom vi inte vill att vederlägga denna cache varje gång ett foto med status = 2 sparas. Till finjustera kriterierna ogiltigförklaringen, kan vi ange att bara ogiltigförklara på vissa områden. Till exempel:
Photo.objects.cache ("användare"). Filter (user = användare, status = 2)
Denna fråga kommer att få ogiltiga om något av följande villkor är uppfyllda:
1. En av de objekt som returneras av fråge ändras.
2. Användaren ändras.
3. Foto modifieras och har user = användare.
django-cachebot kan också hantera select_related termins relationer, och omvänt relationer, det vill säga:
Photo.objects.select_related (). Cache ("användare"). Filter (user__username = "David", status = 2)
Photo.objects.cache ("användare"). Filter (user__username = "David", status = 2)
Photo.objects.cache (message__sender "). Filter (message__sender = användare, status = 2)
Inställningar
CACHEBOT_CACHE_GET default: False
om CACHEBOT_CACHE_GET = sant kommer alla objects.get frågor automatiskt cachad. Detta kan åsidosättas på chefsnivå så här:
klass Bilder (models.Model):
& Nbsp; ...
& Nbsp; objekt = models.Manager (cache_get = sant)
CACHEBOT_CACHE_ALL default: False
om CACHEBOT_CACHE_ALL = sant, kommer alla frågor automatiskt cachad. Detta kan åsidosättas på chefsnivå så här:
klass Bilder (models.Model):
& Nbsp; ...
& Nbsp; objekt = models.Manager (cache_all = sant)
CACHE_PREFIX default: ''
Anta att du har en utveckling och produktion server delar samma memcached server. Normalt är det en dålig idé eftersom varje server kan skriva över den andra serverns nycklar cache. Om du lägger till CACHE_PREFIX dina inställningar, kommer alla nycklar cache har att prefix läggs till dem så att du kan undvika det här problemet.
Förbehåll (Viktigt!)
& Nbsp; 1. django-cachebot kräver django 1.2 eller högre
& Nbsp; 2. Lägga till / Ta bort kommer objekt med en ManyRelatedManager inte automatiskt ogiltig. Detta beror på signaler för den här typen av verksamhet är inte i Django fram 1.2. Tills dess, måste du manuellt ogiltigförklara dessa frågor så här:
& Nbsp; från cachebot.signals importera invalidate_object
& Nbsp; user.friends.add (vän)
& Nbsp; invalidate_object (användare)
& Nbsp; invalidate_object (vän)
& Nbsp; 3. räkna () frågor kommer inte att gå cachade.
& Nbsp; 4. Om du ogiltigförklara på ett område som ligger i ett område eller utesluta frågan, kommer dessa frågor att få ogiltigförklaras när något i tabellen ändras. Till exempel följande skulle få ogiltigförklaras när något på användartabellen förändrats:
& Nbsp;. Photo.objects.cache ("användare") filter (user__in = användare, status = 2)
& Nbsp;. Photo.objects.cache ("användare") utesluta (user = användare, status = 2)
& Nbsp; 5. Du bör nog använda ett verktyg som django-memcache-status för att kontrollera status för din cache. Om memcache överfull och börjar tappa nycklar, är det möjligt att dina frågor inte kan bli ogiltig.
& Nbsp; 6. .values_list () inte cache än. Du bör göra något sånt här i stället:
& Nbsp; [. Foto ['id'] för foto i Photo.objects.cache ("användare") filter (user = användare) .values ​​("id")]
& Nbsp; 7. Det är möjligt att det finns kant fall jag har missat. django-cachebot är fortfarande i sin linda, så du bör ändå dubbelkolla att dina frågor är att få cachade och ogiltigförklaras. . Hör av dig om du märker några konstiga avvikelser

Krav :

  • Python
  • Django

Annan programvara för utvecklare David Ziegler

django-urlcrypt
django-urlcrypt

12 May 15

Kommentarer till django-cachebot

Kommentarer hittades inte
Kommentar
Slå på bilder!