Пропуски Junior Кеширование обновлено
Cache-aside в Django
Вопрос
Допишите cache-aside для страницы каталога.
from django.core.cache import cache
def catalog_page(category_id):
key = f'catalog:{category_id}'
data = cache.__(1)__(key)
if data is __(2)__:
data = build_page(category_id)
cache.__(3)__(key, data, timeout=300)
return data
Попробуйте сами
Заполните пропуски по номерам.
1
2
3
Показать ответ и разбор
Коротко
cache.get возвращает None при промахе (или значение по умолчанию вторым аргументом), cache.set сохраняет с TTL. Проверка is None, а не if not data, иначе пустая страница будет пересчитываться всегда.
Что в пропусках
1
get
2
None
3
set
Разбор
cache.get возвращает None при промахе (или значение по умолчанию вторым аргументом), cache.set сохраняет с TTL. Проверка is None, а не if not data, иначе пустая страница будет пересчитываться всегда.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.