django-cachebot

Skjermbilde programvare:
django-cachebot
Prog.varedetaljer:
Versjon: 0.4.1
Last opp dato: 11 May 15
Utvikler: David Ziegler
Lisens: Gratis
Popularitet: 11

Rating: 3.0/5 (Total Votes: 1)

django-cachebot er en Django app som gir automatisert caching og invalide.
Installasjon
& Nbsp; 1. easy_install django-cachebot eller PIP installere django-cachebot
& Nbsp; 2.
& Nbsp; Legg cachebot til dine INSTALLED_APPS
& Nbsp; 3.
& Nbsp; ligger en cache backend til en av de backends i cachebots.backends, for eksempel:
& Nbsp; CACHE_BACKEND = 'cachebot.backends.memcached:? //127.0.0.1: 11211 / timeout = 0'
Nåværende støttes backends er:
cachebot.backends.dummy
cachebot.backends.memcached
cachebot.backends.pylibmcd
Cachebot ape patcher standard Django manager og queryset å gjøre CacheBotManager og CachedQuerySet standardene som brukes av Django-prosjektet.
Bruk
Tenk deg at du hadde en spørring som så ut som dette, og du ønsket å cache det:
Photo.objects.filter (user = bruker, status = 2)
Bare legg .cache () til queryset kjede som så:
Photo.objects.cache (). Filtrere (user = bruker, status = 2)
Dette søket vil bli ugyldig hvis en av følgende betingelser er oppfylt:
1. En av de gjenstander som returneres av spørringen blir endret.
2. Brukeren blir endret.
3. Et bilde er modifisert og har status = 2.
4. Et bilde er modifisert og har user = bruker.
Dette invalide kriteriene er trolig for forsiktige, fordi vi ikke ønsker å oppheve denne bufferen hver gang et bilde med status = 2 er lagret. Finjustering av invalide kriteriene, kan vi spesifisere å bare oppheve på enkelte felt. For eksempel:
Photo.objects.cache ("bruker"). Filtrere (user = bruker, status = 2)
Dette søket vil bli ugyldig hvis en av følgende betingelser er oppfylt:
1. En av de gjenstander som returneres av spørringen blir endret.
2. Brukeren blir endret.
3. Et bilde er modifisert og har user = bruker.
django-cachebot kan også håndtere select_related, termin relasjoner, og omvendt relasjoner, dvs:
Photo.objects.select_related (). Cache ("bruker"). Filtrere (user__username = "David", status = 2)
Photo.objects.cache ("bruker"). Filtrere (user__username = "David", status = 2)
Photo.objects.cache ('message__sender'). Filtrere (message__sender = bruker, status = 2)
Innstillinger
CACHEBOT_CACHE_GET standard: False
hvis CACHEBOT_CACHE_GET = Sant, vil alle objects.get spørringer automatisk bli lagret. Dette kan overstyres på ledernivå som så:
klasse Bilder (models.Model):
& Nbsp; ...
& Nbsp; gjenstander = models.Manager (cache_get = True)
CACHEBOT_CACHE_ALL standard: False
hvis CACHEBOT_CACHE_ALL = Sant, vil alle forespørsler automatisk bli lagret. Dette kan overstyres på ledernivå som så:
klasse Bilder (models.Model):
& Nbsp; ...
& Nbsp; gjenstander = models.Manager (cache_all = True)
CACHE_PREFIX standard: ''
Anta at du har en utvikling og produksjon server deler samme memcached server. Normalt er dette en dårlig idé fordi hver server kan overskrive den andre serverens cache nøkler. Hvis du legger CACHE_PREFIX til innstillingene dine, vil alle cache tastene har som prefiks lagt til dem, slik at du kan unngå dette problemet.
Advarsler (Viktig!)
& Nbsp; 1. django-cachebot krever django 1.2 eller høyere
& Nbsp; 2. Legge til / Fjerne objekter med en ManyRelatedManager vil ikke automatisk ugyldig. Dette er fordi signaler for denne typen operasjoner er ikke i Django før 1.2. Inntil da, må du manuelt oppheve disse søkene som så:
& Nbsp; fra cachebot.signals importere invalidate_object
& Nbsp; user.friends.add (venn)
& Nbsp; invalidate_object (bruker)
& Nbsp; invalidate_object (venn)
& Nbsp; 3. telle () forespørsler vil ikke bli mellomlagret.
& Nbsp; 4. Hvis du er ugyldig på en mark i et område eller ekskludere spørring, vil disse søkene bli ugyldiggjort når noe i endringene tabellen. For eksempel følgende ville bli ugyldiggjort når noe på bruker bordet endret:
& Nbsp;. Photo.objects.cache ("bruker") filter (user__in = brukere, status = 2)
& Nbsp;. Photo.objects.cache ("bruker") utelukke (user = bruker, status = 2)
& Nbsp; 5. Du bør nok bruke et verktøy som Django-Memcache-status for å sjekke status på din cache. Hvis Memcache overfills og begynner å slippe nøkler, er det mulig at dine spørringer ikke kan bli ugyldiggjort.
& Nbsp; 6. .values_list () ikke cache ennå. Du bør gjøre noe som dette i stedet:
& Nbsp; [. Bildet ['id'] for foto i Photo.objects.cache ("bruker") filter (user = bruker) .values ​​('id')]
& Nbsp; 7. Det er mulig at det er kant tilfellene jeg har gått glipp av. django-cachebot er fortsatt i sin barndom, så du bør fortsatt dobbeltsjekke at dine spørsmål får bufret og ugyldiggjort. . Gi meg beskjed hvis du merker noen rare avvik

Krav

  • Python
  • Django

Annen programvare fra utvikleren David Ziegler

django-urlcrypt
django-urlcrypt

12 May 15

Kommentarer til django-cachebot

Kommentarer ikke funnet
Legg til kommentar
Slå på bilder!