django-cachebot

Screenshot Software:
django-cachebot
Szczegóły programowe:
Wersja: 0.4.1
Filmu: 11 May 15
Wywoływacz: David Ziegler
Licencja: Wolny
Popularność: 11

Rating: 3.0/5 (Total Votes: 1)

django-cachebot jest aplikacja, która zapewnia automatyczną Django buforowanie i unieważnienie.
instalacji
& Nbsp; 1. easy_install django-cachebot lub pip zainstalować django-cachebot
& Nbsp; 2.
& Nbsp; Dodaj cachebot do INSTALLED_APPS
& Nbsp; 3.
& Nbsp; Ustaw backend cache jednego z backendów w cachebots.backends, na przykład:
& Nbsp; CACHE_BACKEND = "cachebot.backends.memcached: //127.0.0.1: 11211 / timeout = 0 '
Aktualne wspierane backends to:
cachebot.backends.dummy
cachebot.backends.memcached
cachebot.backends.pylibmcd
Cachebot małpa patch domyślnego menedżera Django i QuerySet aby CacheBotManager i CachedQuerySet domyślnie ustawiona używane przez Django.
Zastosowanie
Przypuśćmy, że masz zapytanie, co wyglądało jak to i chciał go w pamięci podręcznej:
Photo.objects.filter (user = użytkownik, status = 2)
Wystarczy dodać .cache () do łańcucha QuerySet tak:
Photo.objects.cache (). Filtrować (user = użytkownik, status = 2)
To zapytanie będzie unieważniony, jeśli którykolwiek z następujących warunków:
1. Jeden z obiektów zwróconych przez zapytanie zostanie zmieniona.
2. Użytkownik jest zmieniona.
3. Zdjęcie zostanie zmodyfikowany i ma status = 2.
4. Zdjęcie zostanie zmodyfikowany i ma użytkownika = user.
Te kryteria Unieważnienie jest prawdopodobnie zbyt ostrożni, ponieważ nie chcemy, aby unieważnić Ta skrzynka każdym razem zdjęcie ze statusem = 2 jest zapisany. Aby dostroić kryteria unieważnieniu, możemy określić tylko unieważnienie na określonych obszarach. Na przykład:
Photo.objects.cache ("użytkownik"). Filtrować (user = użytkownik, status = 2)
To zapytanie będzie unieważniony, jeśli którykolwiek z następujących warunków:
1. Jeden z obiektów zwróconych przez zapytanie zostanie zmieniona.
2. Użytkownik jest zmieniona.
3. Zdjęcie zostanie zmodyfikowany i ma użytkownika = user.
django-cachebot obsługuje także select_related, stosunki do przodu i do tyłu relacji, tj:
Photo.objects.select_related (). Cache ("użytkownik"). Filtrować (user__username = "David", status = 2)
Photo.objects.cache ("użytkownik"). Filtr (user__username = "David", status = 2)
Photo.objects.cache ("message__sender"). Filtrować (message__sender = użytkownika, status = 2)
Ustawienia
Domyślna CACHEBOT_CACHE_GET: Fałsz
jeśli CACHEBOT_CACHE_GET = true, wszystkie objects.get zapytania zostanie automatycznie buforowane. To może być zmienione na poziomie menedżera tak:
Zdjęcia (models.Model klasy):
& Nbsp; ...
& Nbsp; obiekty = models.Manager (cache_get = True)
Domyślna CACHEBOT_CACHE_ALL: Fałsz
jeśli CACHEBOT_CACHE_ALL = true, wszystkie zapytania będą automatycznie buforowane. To może być zmienione na poziomie menedżera tak:
Zdjęcia (models.Model klasy):
& Nbsp; ...
& Nbsp; obiekty = models.Manager (cache_all = True)
Domyślna CACHE_PREFIX: ''
Załóżmy, że rozwój i dzielenie tego samego serwera memcached serwer produkcyjny. Zwykle jest to zły pomysł, ponieważ każdy serwer może być nadpisanie klawiszy pamięci podręcznej drugiego serwera. Jeśli dodać CACHE_PREFIX w ustawieniach, wszystkie klawisze pamięci podręcznej będzie miał ten przedrostek dodany do nich, dzięki czemu można uniknąć tego problemu.
Ostrzeżenia (Ważne!)
& Nbsp; 1. django-cachebot wymaga Django 1.2 lub nowszej
& Nbsp; 2. Dodanie / usunięcie obiektów z ManyRelatedManager nie będzie automatycznie unieważnia. To dlatego, że sygnały dla tych typów operacji, które nie są w Django aż do 1,2. Do tego czasu trzeba będzie ręcznie unieważnić te pytania tak:
& Nbsp; z cachebot.signals importować invalidate_object
& Nbsp; user.friends.add (przyjaciel)
& Nbsp; invalidate_object (użytkownik)
& Nbsp; invalidate_object (przyjaciel)
& Nbsp; 3. count () pytania nie zostaną w pamięci podręcznej.
& Nbsp; 4. Jeśli unieważniania na pole, które jest w zasięgu lub wykluczenia zapytanie, te pytania będzie unieważniony, gdy coś się zmienia w tabeli. Na przykład następujące dostanie unieważnione, gdy coś na stole użytkownika zmienił:
. & Nbsp; Photo.objects.cache ("użytkownik") filtr (user__in = użytkowników, status = 2)
. & Nbsp; Photo.objects.cache ("użytkownik") wyklucza (user = użytkownik, status = 2)
& Nbsp; 5. Powinieneś użyć narzędzia takie jak django-memcache-statusu, aby sprawdzić stan pamięci podręcznej. Jeśli memcache przepełnia i zaczyna spada klucze, to możliwe, że zapytania nie mogą dostać unieważnione.
& Nbsp; 6. .values_list () nie ma jeszcze w pamięci podręcznej. Należy zrobić coś takiego, zamiast:
& Nbsp; [fot. ['Id'] na zdjęciu w Photo.objects.cache ("Użytkownik") filtr (user = użytkownik) .values ​​('id')]
& Nbsp; 7. Jest możliwe, że istnieją przypadki krawędzi tęskniłem. django-cachebot jest nadal w jego dzieciństwie, więc nadal powinien dokładnie sprawdzić, że Twoje pytania są coraz buforowane i unieważnione. . Proszę dać mi znać, jeśli zauważy się dziwne rozbieżności

Wymagania :

  • Python
  • Django

Inne programy z deweloperem David Ziegler

django-urlcrypt
django-urlcrypt

12 May 15

Komentarze do django-cachebot

Komentarze nie znaleziono
Dodaj komentarz
Włącz zdjęć!