Оптимизация?
This commit is contained in:
@@ -2,6 +2,7 @@ from django.shortcuts import render
|
|||||||
from django.core.paginator import Paginator
|
from django.core.paginator import Paginator
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
from .models import manga_collection
|
from .models import manga_collection
|
||||||
|
import hashlib
|
||||||
|
|
||||||
|
|
||||||
def manga_catalog(request):
|
def manga_catalog(request):
|
||||||
@@ -16,12 +17,30 @@ def manga_catalog(request):
|
|||||||
|
|
||||||
# Получаем выбранные теги
|
# Получаем выбранные теги
|
||||||
selected_tags = request.GET.getlist('tags')
|
selected_tags = request.GET.getlist('tags')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
query = {}
|
query = {}
|
||||||
|
|
||||||
|
query_key = hashlib.md5(str(query).encode()).hexdigest()
|
||||||
|
cache_key = f"count_{query_key}"
|
||||||
|
total_filtered = cache.get(cache_key)
|
||||||
|
|
||||||
|
if total_filtered is None:
|
||||||
|
total_filtered = manga_collection.count_documents(query)
|
||||||
|
cache.set(cache_key, total_filtered, 60) # на 1 минуту
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
""" query = {}
|
||||||
if selected_tags:
|
if selected_tags:
|
||||||
query['tags'] = {'$all': selected_tags}
|
query['tags'] = {'$all': selected_tags}
|
||||||
|
|
||||||
# Считаем количество для пагинации (можно тоже кешировать по хешу, но пока так)
|
# Считаем количество для пагинации (можно тоже кешировать по хешу, но пока так)
|
||||||
total_filtered = manga_collection.count_documents(query)
|
total_filtered = manga_collection.count_documents(query)"""
|
||||||
|
|
||||||
# Получаем номер страницы
|
# Получаем номер страницы
|
||||||
page_number = request.GET.get('page') or 1
|
page_number = request.GET.get('page') or 1
|
||||||
|
|||||||
Reference in New Issue
Block a user