Кэширование страницы Django для быстрой загрузки

#python #django

#python #django

Вопрос:

В моем приложении Django я использовал метод кэширования для каждого сайта, чтобы ускорить загрузку страницы. В settings.py Я сделал следующее:

 MIDDLEWARE = [
    'django.middleware.cache.UpdateCacheMiddleware',     
    'django.middleware.common.CommonMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',  
]


CACHE_MIDDLEWARE_ALIAS = 'default'  
CACHE_MIDDLEWARE_SECONDS = '604800'    
CACHE_MIDDLEWARE_KEY_PREFIX = ''    
 

но происходит то, что когда я вношу изменения в таблицу базы данных, я не вижу эффекта во внешнем интерфейсе. Но, возвращаясь к базе данных, все в порядке. Например, я меняю имя с Питера на Мэри, в моем шаблоне я все еще вижу Питера, но в базе данных есть Мэри. Кажется, мне нужно синхронизировать мой кеш и базу данных.
Ниже приведено то, что я нашел через Интернет, но я не знаю, где разместить эту функцию. находится в views.py ? в моделях? или где-нибудь еще? Пожалуйста, помогите

 from django.db.models.signals import post_save
@receiver(post_save, sender=BlogPost)
def clear_cache(sender, instance, created, **kwargs):
  if instance.published_on is not None:
    cache.delete('feed')
 

Комментарии:

1. «когда я вношу изменения в таблицу базы данных, я не вижу эффекта во внешнем интерфейсе» < — Именно по этой причине кэширование делает ваши страницы быстрее. Django не запрашивает базу данных для каждого запроса. Если вы этого не хотите, вам не следует использовать кэширование.

2. Так нет ли другого способа, который я мог бы использовать, чтобы использовать кэширование базы данных запросов django? в течение небольшого промежутка времени?