~/talk

How I made a powerful cache system using Go

Talkat DevConf.US 2025 · 2025-09-19..09-20· [go, web-performance]
slides:none on file

Built a Go HTTP cache called Souin that plugs into Traefik and Caddy, backed by multiple storages (badger, filesystem, Redis and others) and deployed via Docker Hub and GoReleaser. It uses goroutines, channels, context and interfaces, implements request coalescing with singleflight, supports ESI fragments and RFC cache-group invalidation, and claims lower latency than Varnish (example: 40 concurrent clients get a single upstream fetch). Tests run with race detector, Newman end-to-end, and CI linting.

AI-written summary · about

  1. 0:00Introduction
  2. 1:27Custom HTTP cache system
  3. 2:52Go’s goroutines and channels
  4. 6:09Flexible storage backends
  5. 8:19Go’s context system
  6. 9:46YAML configuration in Go
  7. 11:33Swan plugin with reverse proxies
  8. 13:23Middleware for caching
  9. 16:35Request coalescing
  10. 18:19Cache management API
  11. 19:43Storage backends
  12. 20:26Cache groups and invalidation
  13. 21:50Edge Side Includes caching
  14. 26:06HTTP cache RFCs
  15. 27:54Cache status headers
  16. 29:25CDN cache control
  17. 31:10Testing and deployment
  18. 33:39Swan cache future plans
  19. 34:44Q&A
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.