Django cors cache modeule
ΠΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΡΠΏΠ΅ΠΊΡΡΠ° ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π£ΡΠΎΠ²Π½ΠΈ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
###Query cache
ΠΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ get/count Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ.
###ΠΠ±ΡΡΠ½ΡΠΉ ΠΊΡΡ
ΠΠΎΠ»Π½ΠΎΡΡΡΡ ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΡΠ΅Π³ Π² Django.
{% load cors_cache %}
{% cache "cahce_block_name" var1 var2 ... varN cache=cache2 %}
Content...
{% endcache %}
###Π£ΠΌΠ½ΡΠΉ ΠΊΡΡ
ΠΠ»Ρ Π±Π»ΠΎΠΊΠΎΠ² ΠΊΡΡΠ° ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡΡΡ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
smart_cache block_name [model_links] model_links - ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΈΠΏΠ° Model
{% load cors_cache %}
{% smart_cache "cahce_block_name" request.user cache=cache2 %}
Content...
{% end_smart_cache %}
ΠΠ»Ρ ΡΠ±ΡΠΎΡΠ° ΠΊΡΡΠ° ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΊΡΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΡΡΡ ΠΈΠ½Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ, ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ links.
{% smart_cache "cahce_block_name" request.user cache=cache2 links="news.article.user" %}
Content...
{% end_smart_cache %}
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ news.article, ΠΈΡΠ΅ΡΡΡ ΡΠ΅Π³ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ cahce_block_name ΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌ Ρ ΠΏΠΎΠ»Π΅ΠΌ user Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ news. ΠΠΎ Π»ΡΡΡΠ΅ ΡΠ΅Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΡΡΡ ΠΈΠ½Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΎΠΉ:
CORSCACHE_EXTENDET_LINKS = {
'news.article': {
'cahce_block_name': {'links':('user',),'cache':'cache2'},
},
}
Example settings
# -*- coding: utf-8 -*-
CORSCACHE_DEFAULT_TIME = 86400 # 24 Hour
CORSCACHE_DEFAULT_CACHE = 'level1'
# ΠΡΠ΅ΡΠΈΠΊΡΡ ΠΊ ΠΈΠΌΠ΅Π½Π°ΠΌ ΠΊΡΡΠ°
CORSCACHE_BLOCKS_PREFIX = 'blocks'
CORSCACHE_QUERYS_PREFIX = 'queryes'
CORSCACHE_ACTIVE = True
CORSCACHE_QUERYCACHE_ACTIVE = True
#
# ΠΠ½ΡΠ΅Π»Π΅ΠΊΡ - Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΡΡΠΈΡΡΠΊΠ° ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
Π±Π»ΠΎΠΊΠΎΠ².
# ΠΡΠ»ΠΈ ΠΎΡΡΠΈΡΡΠΊΠ° ΠΏΠΎΡΡΡΠΎΠ΅Π½Π° ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π°Ρ
ΡΠΎ Π»ΡΡΡΠ΅ Π²ΡΠΊΠ»ΡΡΠΈΡΡ.
#
CORSCACHE_INTELLIGENCE = True
#
# Π‘ΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ ΡΠ²ΡΠ·ΠΊΠΈ. [ ΠΠ°ΡΡΠ° ΠΈΠ½Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ]
#
# ΠΠ½ΠΎΠ³Π΄Π° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΡ Π±Π»ΠΎΠΊΠ° ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ,
# ΠΡΠΎΡΡΠΎ ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ Π½Π΅ΠΈΠΌΠ΅Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠΌΡΡΠ»Π°
# ΠΠ΅Π΄Ρ Π½Π°ΡΠ° Π·Π°Π΄Π°ΡΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ ΡΠΈΡΠ»ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ²,
# ΠΈ Π²ΠΎΡ Π·Π΄Π΅ΡΡ ΠΏΠΎΠΌΠΎΠ³ΡΡ ΡΠ²ΡΠ·ΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Ρ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ.
#
# ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π»ΠΈΡΡΡ Π½Π° Π±Π»ΠΎΠΊ
#
# 'news.article': { 'news': {'links':('user',),'cache':'cacheName'}, 'catalog.product': ('section',) }
# ΠΠ½ Π²Π»ΠΈΡΠ΅Ρ Π½Π° Π±Π»ΠΎΠΊ Π½ΠΎΠ²ΠΎΡΡΠ΅ΠΉ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ²ΡΠ·ΠΈ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ.
# Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π±Π»ΠΎΠΊ Ρ Π½Π°Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ ΠΊΠ°ΠΊ:
#
# {% smart_cache "news" autor cache=cacheName %} ... {% end_smart_cache %}
#
# ΠΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΡΡΠΈ ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ ΠΊΡΡ ΡΡΠΎΠΉ Π³ΡΡΠΏΠΏΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ
#
# ΠΠ°ΡΡΠ° ΠΈΠ½Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ
CORSCACHE_EXTENDET_LINKS = {
# ΠΠ½Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ ΠΏΠΎ ΠΌΠΎΠΈΠΌ Π΄ΡΡΠ·ΡΡΠΌ
# ΠΡΠΎΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ/ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄ΡΡΠ³Π°
'friendlent.friend': {
'user_info': ('user',), # ΠΠ½Π²Π°Π»ΠΈΠ΄ΠΈΡΡΠ΅ΠΌ Π±Π»ΠΎΠΊ user_info ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ user
'planes_block': ('user',), # ΠΠ±Π½ΠΎΠ²ΠΈΠΌ ΠΏΠ»Π°Π½Ρ
'notifi_block': ('user',), # ΠΠ±Π½ΠΎΠ²ΠΈΠΌ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ
'notifies_index': ('user',), # ΠΠ±Π½ΠΎΠ²ΠΈΠΌ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ index
'friendlent_general': ('user',), # ΠΠ»ΠΎΠΊ Π΄ΡΡΠ·Π΅ΠΉ ΡΠΏΡΠ°Π²Π°
},
'profile.profile': {
'user_info': ('user',), # ΠΠ½Π²Π°Π»ΠΈΠ΄ΠΈΡΡΠ΅ΠΌ Π±Π»ΠΎΠΊ user_info ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ user
},
# ΠΠ»ΠΎΠΊ Ρ
ΠΎΡΡ ΠΏΠΎΠ±ΡΠ²Π°ΡΡ ΡΠΏΡΠ°Π²Π°
'geographi.iwas': {
'wantvisited_city': {'links':('user',),'cache':'level2'},
'visited_city': {'links':('user',),'cache':'level2'},
},
# ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ
'reester.atom': {
'notifi_block': ('user',), # ΠΠ±Π½ΠΎΠ²ΠΈΠΌ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ
'notifies_index': ('user',), # ΠΠ±Π½ΠΎΠ²ΠΈΠΌ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ index
},
}
# ΠΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ²
CORSCACHE_QUERY_CACHE = {
'auth.user':{'get':3600}, # ΠΠΎΠ»ΡΡΠΈΡΡ ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ°Ρ
'profile.profile':{'get':3600}, # ΠΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠΎΡΠΈΠ»Ρ Π½Π° ΡΠ°Ρ
'*.*': {'count':3600,'cache':'level2'}, # ΠΡΡΠΈΡΡΠ΅ΠΌ Π²ΡΠ΅ count Π·Π°ΠΏΡΠΎΡΡ Π½Π° ΡΠ°Ρ
}