"""
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

















