*点線はオリジナル画像のリクエスト/レスポンス
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: vcl_recv<br>vcl_hash
Edge/Deliver->>Edge/Fetch: Request /foo<br>(empty Io-Params)
Note over Edge/Fetch: vcl_miss
Edge/Fetch->>Shield/Deliver: Request /foo?bar=xxx
Note over Shield/Deliver: vcl_recv<br>vcl_hash
Shield/Deliver->>Shield/Fetch: Request /foo<br>(empty Io-Params)
Shield/Fetch->>ImageOpto: Request /foo<br>(empty Io-Params)
ImageOpto-->>Shield/Fetch: Request /foo
Note over Shield/Fetch: vcl_miss
Shield/Fetch-->>Origin: Request /foo
Origin-->>Shield/Fetch: Response
Note over Shield/Fetch: vcl_fetch
Shield/Fetch-->>ImageOpto: Response
ImageOpto->>Shield/Fetch: Response (Untransformed)
Shield/Fetch->>Shield/Deliver: Response (Untransformed)
Note over Shield/Deliver: vcl_deliver
Shield/Deliver->>Edge/Fetch: Response (Untransformed)
Note over Shield/Deliver: vcl_log
Note over Edge/Fetch: vcl_fetch
Edge/Fetch->>Edge/Deliver: Response (Untransformed)
Note over Edge/Deliver: vcl_deliver
Edge/Deliver->>Edge/Deliver: restart
Note over Edge/Deliver: vcl_recv<br>vcl_hash
Edge/Deliver->>Edge/Fetch: Request /foo<br>(with Io-Params)
Note over Edge/Fetch: vcl_miss
Edge/Fetch->>Shield/Deliver: Request /foo?width=x
Note over Shield/Deliver: vcl_recv<br>vcl_hash
Shield/Deliver->>Shield/Fetch: Request /foo<br>(with Io-Params)
Shield/Fetch->>ImageOpto: Request /foo<br>(with Io-Params)
ImageOpto-->>Shield/Fetch: Request /foo
Note over Shield/Fetch: vcl_hit
Shield/Fetch-->>ImageOpto: Response
ImageOpto-->>ImageOpto: Transform image
ImageOpto->>Shield/Fetch: Response (Transformed)
Shield/Fetch->>Shield/Deliver: Response (Transformed)
Note over Shield/Deliver: vcl_deliver
Shield/Deliver->>Edge/Fetch: Response (Transformed)
Note over Shield/Deliver: vcl_log
Note over Edge/Fetch: vcl_fetch
Edge/Fetch->>Edge/Deliver: Response (Transformed)
Note over Edge/Deliver: vcl_deliver
Edge/Deliver->>Client: Response (Transformed)
Note over Edge/Deliver: vcl_log