// +build ignore,OMIT package main import ( "bytes" "net/http" "time" "github.com/golang/groupcache" ) func main() { // STARTINIT OMIT me := "http://10.0.0.1" peers := groupcache.NewHTTPPool(me) // Whenever peers change: peers.Set("http://10.0.0.1", "http://10.0.0.2", "http://10.0.0.3") // ENDINIT OMIT // STARTGROUP OMIT var thumbNails = groupcache.NewGroup("thumbnail", 64<<20, groupcache.GetterFunc( func(ctx groupcache.Context, key string, dest groupcache.Sink) error { fileName := key dest.SetBytes(generateThumbnail(fileName)) return nil })) // ENDGROUP OMIT var ctx groupcache.Context var w http.ResponseWriter var r *http.Request // STARTUSE OMIT var data []byte err := thumbNails.Get(ctx, "big-file.jpg", groupcache.AllocatingByteSliceSink(&data)) // ... _ = err // OMIT var modTime time.Time // OMIT http.ServeContent(w, r, "big-file-thumb.jpg", modTime, bytes.NewReader(data)) // ENDUSE OMIT } func generateThumbnail(filename string) []byte { // ... return nil }