plantuml
@startuml
actor "2G Client" as Client2G
actor "4G Client" as Client4G
participant "API Gateway" as Gateway
participant "Content Optimizer" as Optimizer
Client2G -> Gateway: GET /api/v1/content\nECT: 2g\nDownlink: 0.5
Gateway -> Optimizer: Classify connection:\nHigh latency, low bandwidth
Optimizer -> Optimizer: Apply aggressive\noptimization profile
Optimizer --> Gateway: Minimal payload\n(text only, no images)
Gateway --> Client2G: 200 OK\nVary: ECT\n[20KB response, no prefetch]
Client4G -> Gateway: GET /api/v1/content\nECT: 4g\nDownlink: 8.0
Gateway -> Optimizer: Classify connection:\nLow latency, high bandwidth
Optimizer -> Optimizer: Apply full-quality\nprofile with prefetch
Optimizer --> Gateway: Rich payload\n(images, videos, prefetch hints)
Gateway --> Client4G: 200 OK\nVary: ECT\n[200KB response + prefetch]
note right
ECT provides coarse-grained
network classification for
quick optimization decisions
end note
@enduml