django-cachebot

Screenshot Software:
django-cachebot
Mga detalye ng Software:
Bersyon: 0.4.1
I-upload ang petsa: 11 May 15
Nag-develop: David Ziegler
Lisensya: Libre
Katanyagan: 11

Rating: 3.0/5 (Total Votes: 1)

django-cachebot ay isang Django app na nagbibigay ng mga awtomatikong caching at bisa.
Pag-install
& Nbsp; 1. easy_install django-cachebot o PIP install django-cachebot
& Nbsp; 2.
& Nbsp; Idagdag cachebot sa iyong INSTALLED_APPS
& Nbsp; 3.
& Nbsp; Magtakda ng isang backend cache sa isa sa mga backends in cachebots.backends, halimbawa:
& Nbsp; CACHE_BACKEND = 'cachebot.backends.memcached: //127.0.0.1: 11211 / timeout = 0'
Kasalukuyang sinusuportahan backends ay:
cachebot.backends.dummy
cachebot.backends.memcached
cachebot.backends.pylibmcd
Cachebot unggoy patch ang default Django manager at queryset upang gumawa CacheBotManager at CachedQuerySet ang mga default na ginagamit ng iyong mga proyekto Django.
Usage
Ipagpalagay na ikaw ay nagkaroon ng isang query na mukhang ito at nais mong cache ito:
Photo.objects.filter (user = user, katayuan = 2)
Magdagdag lamang .cache () sa queryset chain tulad ng ito:
Photo.objects.cache (). Salain (user = user, katayuan = 2)
Query na ito ay makakakuha invalidated kung ang alinman sa mga sumusunod na kondisyon ay natutugunan:
1. Isa sa mga bagay na ibinalik sa pamamagitan ng query ay binago.
2. Ang user ay binago.
3. Isang Photo ay binago at may status = 2.
4. Isang Photo ay binago at may user = user.
Ito criteria bisa ay maaaring masyadong maingat, dahil hindi namin nais sa magpawalang-bisa ang cache sa bawat oras na ang isang Photo may status = 2 ay naka-save. Upang fine tune ang pamantayan bisa, maaari naming tukuyin sa magpawalang-bisa lamang sa mga tiyak na mga patlang. Halimbawa:
Photo.objects.cache ('user'). Salain (user = user, katayuan = 2)
Query na ito ay makakakuha invalidated kung ang alinman sa mga sumusunod na kondisyon ay natutugunan:
1. Isa sa mga bagay na ibinalik sa pamamagitan ng query ay binago.
2. Ang user ay binago.
3. Isang Photo ay binago at may user = user.
Maaari din hawakan django-cachebot select_related, forward na relasyon, at reverse relasyon, ie:
Photo.objects.select_related (). Cache ('user'). Salain (user__username = "David", katayuan = 2)
Photo.objects.cache ('user'). Salain (user__username = "David", katayuan = 2)
Photo.objects.cache ('message__sender'). Salain (message__sender = user, katayuan = 2)
Mga Setting
Default CACHEBOT_CACHE_GET: Maling
kung CACHEBOT_CACHE_GET = True, ang lahat objects.get tanong ay awtomatikong naka-cache. Ito ay maaaring importansiya sa antas ng manager mo ito:
klase Larawan (models.Model):
& Nbsp; ...
& Nbsp; mga bagay = models.Manager (cache_get = True)
Default CACHEBOT_CACHE_ALL: Maling
kung CACHEBOT_CACHE_ALL = True, ang lahat ng mga tanong ay awtomatikong naka-cache. Ito ay maaaring importansiya sa antas ng manager mo ito:
klase Larawan (models.Model):
& Nbsp; ...
& Nbsp; mga bagay = models.Manager (cache_all = True)
Default CACHE_PREFIX: ''
Ipagpalagay na mayroon kang isang pag-unlad at produksyon ng server na nakikibahagi sa parehong memcached server. Karaniwan ito ay isang masamang ideya dahil ang bawat server ay maaaring patungan keys cache ng iba pang mga server. Kung nagdagdag ka ng CACHE_PREFIX sa iyong mga setting, ang lahat ng mga pindutan ng cache ay magkakaroon na prefix na nakadugtong sa mga ito upang maaari mong maiwasan ang problemang ito.
Caveats (Mahalaga!)
& Nbsp; 1. django-cachebot nangangailangan django 1.2 o mas mataas
& Nbsp; 2. Pagdaragdag / Pag-alis ng bagay na may isang ManyRelatedManager hindi awtomatikong magpawalang-bisa. Ito ay dahil ang mga signal para sa mga uri ng operasyon ay hindi sa Django hanggang 1.2. Hanggang pagkatapos, kailangan mo upang mano-manong magpawalang-bisa sa mga query na ito tulad ng ito:
& Nbsp; mula cachebot.signals import invalidate_object
& Nbsp; user.friends.add (kaibigan)
& Nbsp; invalidate_object (user)
& Nbsp; invalidate_object (kaibigan)
& Nbsp; 3. queries count () ay hindi makakuha ng naka-cache.
& Nbsp; 4. Kung ikaw ay bisa sa isang patlang na ay sa isang hanay o ibukod query, mga query na ito ay makakakuha ng bisa kapag ang anumang bagay sa mga pagbabago table. Halimbawa ang mga sumusunod na nais makakuha ng bisa kapag ang anumang bagay na nasa mesa User nagbago:
& Nbsp;. Photo.objects.cache ('user') salain (user__in = user, katayuan = 2)
& Nbsp;. Photo.objects.cache ('user') ibukod (user = user, katayuan = 2)
& Nbsp; 5. Dapat mong malamang na gumamit ng isang tool tulad ng django-memcache-status upang suriin sa ang katayuan ng iyong cache. Kung overfills memcache at magsisimula bumababa susi, ito ay posible na ang iyong mga tanong ay hindi maaaring makakuha ng bisa.
& Nbsp; 6. .values_list () ay hindi pa cache. Dapat mong gawin ang isang bagay tulad ng sa halip na ito:
& Nbsp; [. Larawan ['id'] para sa mga larawan sa Photo.objects.cache ('user') salain (user = user) .values ​​('id')]
& Nbsp; 7. Ito ay posible na may mga kaso edge ko na hindi nakuha. django-cachebot ay pa rin sa ito ay simula, kaya dapat mo pa ring i-double check na ang inyong mga tanong ay nakakakuha ng naka-cache at bisa. . Mangyaring ipaalam sa akin kung napansin mo ang anumang kakaibang mga pagkakaibang ito

Kinakailangan :

  • sawa
  • Django

Iba pang mga software developer ng David Ziegler

django-urlcrypt
django-urlcrypt

12 May 15

Mga komento sa django-cachebot

Mga Komento hindi natagpuan
Magdagdag ng komento
I-sa mga imahe!