Performance: Why middleware matters in Django
Middleware affects the request and response processing speed, impacting how fast pages start loading and respond to user actions.
Jump into concepts and practice - no test required
class FastMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): # Minimal processing, no blocking calls response = self.get_response(request) return response
class SlowMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): import time time.sleep(0.5) # Simulate slow processing response = self.get_response(request) return response
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Heavy blocking middleware | No direct DOM impact | 0 reflows | Delays paint start | [X] Bad |
| Lightweight middleware | No direct DOM impact | 0 reflows | Paint starts promptly | [OK] Good |
class LogMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
print('Before view')
response = self.get_response(request)
print('After view')
return responseclass ErrorMiddleware:
def __init__(self, get_response):
pass
def __call__(self, request):
return self.get_response(request)
What is the problem?X-App-Version with value 1.0 to every response. Which code snippet correctly implements this?class VersionMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
response['X-App-Version'] = '1.0'
return response correctly adds the header after calling get_response and returns the modified response.