Ответ
В Go можно управлять кэшированием через sync.Pool для объектов или ручное управление мапой с TTL. Для HTTP-кэша используйте httpcache или middleware с ручной реализацией. Пример с sync.Pool:
var pool = sync.Pool{
New: func() interface{} {
return make([]byte, 1024)
},
}
func getBuffer() []byte {
return pool.Get().([]byte)
}
func putBuffer(buf []byte) {
pool.Put(buf)
}
Для сложных сценариев рассмотрите groupcache или ristretto. Ограничивайте размер кэша через:
- фиксированное количество элементов
- максимальный объем памяти
- TTL (time-to-live) для записей