*点線はオリジナル画像のリクエスト/レスポンス
sequenceDiagram
autonumber
participant Client
participant Edge/Deliver
participant Edge/Fetch
participant Shield/Deliver
participant Shield/Fetch
participant ImageOpto
participant Origin
Client->>Edge/Deliver: Request /foo?bar=xxx
Note over Edge/Deliver: Strip QS
Edge/Deliver->>Edge/Fetch: Request /foo<br>(empty Io-Params)
Note over Edge/Fetch: Restore QS
Edge/Fetch->>Shield/Deliver: Request /foo?bar=xxx
Note over Shield/Deliver: Strip QS
Shield/Deliver->>Shield/Fetch: Request /foo<br>(empty Io-Params)
Shield/Fetch->>ImageOpto: Request /foo<br>(empty Io-Params)
ImageOpto-->>Shield/Fetch: Request /foo
Shield/Fetch-->>Origin: Request /foo
Origin-->>Shield/Fetch: Response
Shield/Fetch-->>ImageOpto: Response
ImageOpto->>Shield/Fetch: Response (Untransformed)
Shield/Fetch->>Shield/Deliver: Response (Untransformed)
Shield/Deliver->>Edge/Fetch: Response (Untransformed)
Edge/Fetch->>Edge/Deliver: Response (Untransformed)
Note over Edge/Deliver: Build QS for ImageOpto (width=x)
Note over Edge/Deliver: Restart
Note over Edge/Deliver: Strip QS
Edge/Deliver->>Edge/Fetch: Request /foo<br>(with Io-Params)
Note over Edge/Fetch: Restore QS
Edge/Fetch->>Shield/Deliver: Request /foo?width=x
Note over Shield/Deliver: Strip QS
Shield/Deliver->>Shield/Fetch: Request /foo<br>(with Io-Params)
Shield/Fetch->>ImageOpto: Request /foo<br>(with Io-Params)
ImageOpto-->>Shield/Fetch: Request /foo
Shield/Fetch-->>Shield/Fetch: HIT
Shield/Fetch-->>ImageOpto: Response
Note over ImageOpto: Transform image
ImageOpto->>Shield/Fetch: Response (Transformed)
Shield/Fetch->>Shield/Deliver: Response (Transformed)
Shield/Deliver->>Edge/Fetch: Response (Transformed)
Edge/Fetch->>Edge/Deliver: Response (Transformed)
Edge/Deliver->>Client: Response (Transformed)