Как правильние встроить кеш в уже готовую систему?
Привет. Я сделал сайтик. Сейчас есть два пакета.
Это site который грубо говоря набор функций благодаря каким работает сайт
и пакет public который имеет в себе веб сервер и т.д. в функциях этого пакета происходит получение и обработка данных которые передаются в пакет site ну и обработка данных которые приходят с site функций.
Сейчас нужно добавить кеш.
В голове у меня три варианта
1. кеш встроить в функции пакета public
2. кеш встроить в функции пакета site
3. Сделать прослойку cache и получить архитектуру вида site ->cache ->public где site,cache и public разные пакеты.
Какой вариант будет правильнее? Если у вас есть вариант правильнее моих то говорите:)
Oleg Shevelev: не думаю. Я просто так назвал функцию (контролер) которая вызывает вначале пакет site(он обрабатывает данные, разделил на части из - за того что надо будет ещё и api поднять. Мне же проще будет все контролеры переписать чем весь сайт) а потом данные из site пихает в map и передаёт в пакет html/template
Владимир Грабко: в Golang каждый пакет можно рассматривать как изолированный, выполняющий свою собственную функцию. В этом контексте в общем-то не требуется делать прослойки. Разве что универсальные.
Я вот согласен с Oleg Shevelev На мой взгляд DataFlow выглядит так Request->Listener->Server->Multiplexer->Handler->Response. Cache обычно ставят до Handler, можно пробовать до Mux. Архитектура site public мне не вполне понятна.
Лично я рассматриваю кеширование как часть алгоритмов. Просто алгоритм знает что есть кеш в оперативке, кеш на диске, если программист знает о наличии таких механизмов, но в алгоритм их не положил - значит он странный программист и любит костыли добавлять поверх. Универсального кеширования почти не бывает. По крайней мере интересного:)