Skip to content

Commit 20e56a4

Browse files
committed
perf(server): gzip compress session messages response
Large sessions can have 20MB+ JSON payloads which take 20-30s to transfer over mobile networks. Gzip compression reduces this to ~2-3MB, improving mobile load times by ~5x.
1 parent e834a2e commit 20e56a4

1 file changed

Lines changed: 11 additions & 0 deletions

File tree

packages/opencode/src/server/routes/session.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -579,6 +579,17 @@ export const SessionRoutes = lazy(() =>
579579
sessionID: c.req.valid("param").sessionID,
580580
limit: query.limit,
581581
})
582+
const acceptEncoding = c.req.header("accept-encoding") ?? ""
583+
if (acceptEncoding.includes("gzip")) {
584+
const json = JSON.stringify(messages)
585+
const compressed = Bun.gzipSync(json)
586+
return new Response(compressed, {
587+
headers: {
588+
"Content-Type": "application/json",
589+
"Content-Encoding": "gzip",
590+
},
591+
})
592+
}
582593
return c.json(messages)
583594
},
584595
)

0 commit comments

Comments
 (0)