Performance: Request/response middleware flow
This concept affects the time it takes for a web request to be processed and the response to be sent back, impacting server response time and perceived page load speed.
Jump into concepts and practice - no test required
class EfficientMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): # Minimal processing before view response = self.get_response(request) # Minimal processing after view 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) time.sleep(0.5) # Simulate slow processing return response
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Heavy blocking middleware | 0 (server-side) | 0 (server-side) | 0 (server-side) | [X] Bad |
| Lightweight middleware | 0 (server-side) | 0 (server-side) | 0 (server-side) | [OK] Good |
class LogMiddleware:
def __init__(self, get_response):
self.get_response = get_response
print('Init called')
def __call__(self, request):
print('Before view')
response = self.get_response(request)
print('After view')
return response
# Assume this middleware is active and a request comes inclass ExampleMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response
return response