Django-cachebot avtomatlaşdırılmış caching və yanlış təmin edən Django app edir.
Quraşdırma
& Nbsp; 1. easy_install Django-cachebot ya Django-cachebot bərpa tırtıl
& Nbsp; 2.
& Nbsp; cachebot sizin INSTALLED_APPS əlavə et
& Nbsp; 3.
& Nbsp; məsələn cachebots.backends ilə backends, biri bir cache backend seçin:
& Nbsp; CACHE_BACKEND = 'cachebot.backends.memcached: //127.0.0.1: 11211 / fasiləsi = 0'
Cari dəstək backends var:
cachebot.backends.dummy
cachebot.backends.memcached
cachebot.backends.pylibmcd
Cachebot meymun CacheBotManager və CachedQuerySet sizin Django layihə istifadə u mənim üçün default Django meneceri və queryset yamalar.
istifadə
Bu kimi baxdı ki, bir sorğu var idi və onu önbelleğe istəyirdi Güman:
Photo.objects.filter (istifadəçi = istifadəçi, status = 2)
Məhz belə kimi queryset zəncir .cache () əlavə edin:
Photo.objects.cache (). Filter (istifadəçi = istifadəçi, status = 2)
Aşağıdakı şərtlərdən hər hansı bir əməl, bu sorğu etibarsız olacaq:
Sorğu ilə geri obyektlərin 1. dəyişdirilə olunur.
2. istifadəçi dəyişdirilə olunur.
3. A Photo = 2 redaktə və statusu var.
4. Foto redaktə və istifadəçi = istifadəçi var.
Biz Bu cache statusu = 2 Foto qeyd olunur hər zaman batil istəmirəm, çünki bu etibarsız sayılması meyarlar, yəqin ki, çox ehtiyatlı edir. Gözəl tune etibarsız sayılması meyarlar, biz yalnız müəyyən sahələrdə etibarsız daxil edə bilərsiniz. Məsələn:
Photo.objects.cache (İstifadəçi). Filter (istifadəçi = istifadəçi, status = 2)
Aşağıdakı şərtlərdən hər hansı bir əməl, bu sorğu etibarsız olacaq:
Sorğu ilə geri obyektlərin 1. dəyişdirilə olunur.
2. istifadəçi dəyişdirilə olunur.
3. A Photo redaktə və istifadəçi = istifadəçi var.
Django-cachebot də irəli əlaqələri select_related və əlaqələri əks idarə edə bilərsiniz, yəni:
Photo.objects.select_related (). Cache (İstifadəçi). Filter (user__username = "david", status = 2)
Photo.objects.cache (İstifadəçi). Filter (user__username = "David", status = 2)
Photo.objects.cache (message__sender). Filter (message__sender = istifadəçi, status = 2)
Settings
CACHEBOT_CACHE_GET default: False
CACHEBOT_CACHE_GET True = əgər bütün objects.get sorğu avtomatik cached olacaq. Bu belə kimi meneceri səviyyədə overridden ola bilər:
sinif Photos (models.Model):
& Nbsp; ...
& Nbsp; obyektləri = models.Manager (cache_get = True)
CACHEBOT_CACHE_ALL default: False
CACHEBOT_CACHE_ALL True = əgər, bütün sorğu avtomatik cached olacaq. Bu belə kimi meneceri səviyyədə overridden ola bilər:
sinif Photos (models.Model):
& Nbsp; ...
& Nbsp; obyektləri = models.Manager (cache_all = True)
CACHE_PREFIX default: ''
Eyni memcached server mübadiləsi bir inkişaf və istehsal server düşünək. Adətən bu hər server digər server cache düymələri yadda ola bilər, çünki pis bir fikir deyil. Siz parametrləri CACHE_PREFIX əlavə edin, bütün cache açarları bu problemin qarşısını almaq edə bilərsiniz, belə onlara əlavə ki, prefiks olacaq.
Caveats (Vacib!)
& Nbsp; 1. Django-cachebot Django 1.2 və ya daha tələb edir
& Nbsp; 2. Əlavə / a ManyRelatedManager ilə aradan qaldırılması obyektlərin avtomatik batil deyil. Bu fəaliyyət növləri üçün siqnalları 1.2 qədər Django deyil, çünki bu. O vaxta qədər, özünüz belə kimi bu sorğu qüvvədən lazımdır:
& Nbsp; cachebot.signals olan invalidate_object idxal
& Nbsp; user.friends.add (dost)
& Nbsp; invalidate_object (istifadəçi)
& Nbsp; invalidate_object (dost)
& Nbsp; 3. saymaq () sorğu cached almaq deyil.
& Nbsp; 4. Siz bir sıra və ya sorğu istisna bir sahə üzrə etibarsız edirsinizsə, bu sorğu masa dəyişikliklərin zaman bir şey ləğv olacaq. İstifadəçi masa bir şey dəyişdi Məsələn Aşağıdakı etibarsız almaq olardı:
& Nbsp;. Photo.objects.cache (İstifadəçi) filter (= istifadəçilər user__in, status = 2)
& Nbsp;. Photo.objects.cache (İstifadəçi) istisna (istifadəçi = istifadəçi, status = 2)
& Nbsp; 5. Siz yəqin ki, sizin cache statusu yoxlamaq üçün Django-memcache-statusu kimi bir alət istifadə etməlidir. Memcache overfills və düymələri düşmə başlayır, bu, sizin queries ləğv almaq bilər ki, mümkündür.
& Nbsp; 6. .values_list () hələ önbelleğe etmir. Bu əvəzinə kimi bir şey etmək lazımdır:
& Nbsp; [. Foto ['id'] Photo.objects.cache (İstifadəçi) şəkil üçün (istifadəçi = istifadəçi) .Dəyərlər filter (id)]
& Nbsp; 7. Mən buraxılmış sonra kənar halları var ki, mümkündür. Django-cachebot onun körpəlik hələ də, belə ki, siz hələ ikiqat çek sizin queries cached və etibarsız əldə olunur ki,. . Əgər hər hansı bir qəribə uyğunsuzluq qeyd əgər xahiş edirik Mənə bildirin
tələblər
- Python
- Django
Şərhlər tapılmadı