django-cachebot

Software screenshot:
django-cachebot
Software detaljer:
Version: 0.4.1
Upload dato: 11 May 15
Udvikler: David Ziegler
Licens: Gratis
Popularitet: 11

Rating: 3.0/5 (Total Votes: 1)

Django-cachebot er et Django app, der giver automatisk caching og ugyldiggørelse.
Installation
& Nbsp; 1. easy_install Django-cachebot eller pip installere Django-cachebot
& Nbsp; 2.
& Nbsp; Tilføj cachebot til dine INSTALLED_APPS
& Nbsp; 3.
& Nbsp; Angiv en cache backend til en af ​​backends i cachebots.backends, f.eks:
& Nbsp; CACHE_BACKEND = 'cachebot.backends.memcached:? //127.0.0.1: 11211 / timeout = 0'
Aktuelle understøttede backends er:
cachebot.backends.dummy
cachebot.backends.memcached
cachebot.backends.pylibmcd
Cachebot abe patches standard Django manager og queryset at gøre CacheBotManager og CachedQuerySet standardindstillingerne anvendes af din Django projekt.
Anvendelse
Antag, at du havde en forespørgsel, der lignede dette, og du ønskede at cache det:
Photo.objects.filter (user = bruger, status = 2)
Blot tilføje .cache () til queryset kæde som så:
Photo.objects.cache (). Filter (user = bruger, status = 2)
Denne forespørgsel vil blive ugyldig, hvis en af ​​følgende betingelser er opfyldt:
1. Et af formålene returneres af forespørgslen ændres.
2. Brugeren ændres.
3. Et Foto modificeres og har status = 2.
4. Et Foto modificeres og har brugeren = bruger.
Denne ugyldiggørelse kriterier er nok for forsigtig, fordi vi ikke ønsker at afkræfte denne cache hver gang et foto med status = 2 er gemt. At finjustere ugyldiggørelse kriterier, kan vi angive at kun afkræfte om visse områder. For eksempel:
Photo.objects.cache (»bruger«). Filtrere (user = bruger, status = 2)
Denne forespørgsel vil blive ugyldig, hvis en af ​​følgende betingelser er opfyldt:
1. Et af formålene returneres af forespørgslen ændres.
2. Brugeren ændres.
3. Et Foto modificeres og har brugeren = bruger.
Django-cachebot kan også håndtere select_related, forward relationer, og omvendt relationer, nemlig:
Photo.objects.select_related (). Cache ("bruger"). Filtrere (user__username = "david", status = 2)
Photo.objects.cache (»bruger«). Filtrere (user__username = "david", status = 2)
Photo.objects.cache (message__sender «). Filtrere (message__sender = bruger, status = 2)
Indstillinger
CACHEBOT_CACHE_GET default: Falsk
hvis CACHEBOT_CACHE_GET = True, vil alle objects.get forespørgsler automatisk blive cached. Dette kan tilsidesættes på lederen niveau som så:
klasse Billeder (models.Model):
& Nbsp; ...
& Nbsp; objekter = models.Manager (cache_get = True)
CACHEBOT_CACHE_ALL default: Falsk
hvis CACHEBOT_CACHE_ALL = True, vil alle forespørgsler automatisk blive cached. Dette kan tilsidesættes på lederen niveau som så:
klasse Billeder (models.Model):
& Nbsp; ...
& Nbsp; objekter = models.Manager (cache_all = True)
CACHE_PREFIX standard: ''
Antag at du har en udvikling og produktion server deler den samme memcached server. Normalt er det en dårlig idé, fordi hver server kan overskrive den anden serverens cache nøgler. Hvis du tilføjer CACHE_PREFIX til dine indstillinger, vil alle cache nøgler har denne præfiks vedlagt dem, så du kan undgå dette problem.
Forbehold (Vigtigt!)
& Nbsp; 1. Django-cachebot kræver django 1.2 eller nyere
& Nbsp; 2. Tilføjelse / vil Fjernelse objekter med en ManyRelatedManager ikke automatisk ugyldiggøre. Dette skyldes signaler for disse typer af operationer, der ikke er i Django indtil 1.2. Indtil da, skal du manuelt afkræfte disse forespørgsler som så:
& Nbsp; fra cachebot.signals importerer invalidate_object
& Nbsp; user.friends.add (ven)
& Nbsp; invalidate_object (bruger)
& Nbsp; invalidate_object (ven)
& Nbsp; 3. tæller () forespørgsler ikke bliver cachet.
& Nbsp; 4. Hvis du ugyldiggørelse på et felt, der ligger i et område eller udelukke forespørgsel, vil disse forespørgsler bliver ugyldig, når noget i tabellen ændres. For eksempel følgende ville få ugyldig, når noget på User bordet ændret:
& Nbsp;. Photo.objects.cache ("bruger") filter (user__in = brugere, status = 2)
& Nbsp;. Photo.objects.cache ("bruger") udelukker (user = bruger, status = 2)
& Nbsp; 5. Du bør nok bruge et værktøj som Django-memcache-status for at kontrollere om status for din cache. Hvis memcache overfyldninger og begynder at tabe nøgler, er det muligt, at dine forespørgsler ikke kan få ugyldig.
& Nbsp; 6. .values_list () ikke cache endnu. Du bør gøre noget som dette i stedet:
& Nbsp; [. Foto ['id'] for foto i Photo.objects.cache (»bruger«) filter (user = bruger) .values ​​("id")]
& Nbsp; 7. Det er muligt, at der er kant sager, jeg har savnet. Django-cachebot er stadig i sin vorden, så du bør stadig dobbelttjekke, at dine spørgsmål er at få cached og ugyldige. . Lad mig vide, hvis du bemærker nogen mærkelige uoverensstemmelser

Krav :

  • Python
  • Django

Andre software developer David Ziegler

django-urlcrypt
django-urlcrypt

12 May 15

Kommentarer til django-cachebot

Kommentarer ikke fundet
Tilføj kommentar
Tænd billeder!