При тестировании некоторых оптимизаций Django были получены неожиданные результаты между cache_page vs template cached.Loader .Я ожидал, что cache_page
будет более производительным, поскольку это прямой поиск в кэше, а не прохождение полного уровня шаблонов.Но я, должно быть, неправильно понимаю нечто фундаментальное, потому что последовательно cached.Loader дает лучшие результаты.
Мой тестовый пример:
- Загрузка простой HTML-страницы с несколькими включаемыми шаблонами.
- Использование Django 1.10
- redis в качестве кэша по умолчанию
- использование ab для загрузки теста с
n=1000
, c=20
Включено cached.Loader
с этим в settings.py:
'loaders':[('django.template.loaders.cached.Loader', [
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
]),
]
Включено cache_page
с этим декоратором:
@cache_page(60 * 15)
def home(request):
return render(request, "index2.html",{"static_path":static('myapp/')})
Я комментирую и включаю каждую стратегию кэширования независимо.Последовательно это выглядит так:
loaders.cached.Loader
: ~ 90 запросов / сек @cache_page
: ~ 60 запросов / сек
Любая причина, почемуЯ вижу такой резкий рост с cached.Loader
(около 30%) по сравнению со стратегией cache_page
?