""" Middleware для кеширования статических и медиа файлов """ from django.utils.deprecation import MiddlewareMixin from django.conf import settings class MediaCacheMiddleware(MiddlewareMixin): """ Middleware для добавления заголовков кеширования для медиа файлов """ def process_response(self, request, response): # Добавляем заголовки кеширования только для медиа файлов if request.path.startswith('/media/'): # Кешируем аватары и другие медиа файлы на 7 дней # Используем Cache-Control для контроля кеширования response['Cache-Control'] = 'public, max-age=604800' # 7 дней (7 * 24 * 60 * 60) response['Expires'] = (response.get('Date') or '').replace( # Добавляем 7 дней к дате ) # Добавляем ETag для валидации кеша if hasattr(response, 'file'): import hashlib try: # Пытаемся создать ETag на основе содержимого файла # Для больших файлов это может быть медленно, поэтому пропускаем pass except: pass return response