Desde que tenemos el Zimablade, he estado probando muchas cosas. Una de las que más me gusta tener es AdGuard Home: poder decidir qué bloquear y protegerme de los molestos anuncios se ha convertido en una de las mejores herramientas que tengo en Docker. Como el Zimablade consume muy poca energía (según el medidor, unos 2.6W) y lo uso como DNS principal para todos mis dispositivos, lo dejo encendido todos los días.
Pero como tiene Linux de base, a veces quiero actualizar el sistema. Y ahí aparecía el primer problema: si había una actualización de Docker, la caché que AdGuard Home había reunido durante meses se reseteaba. Entonces todo tenía que volver a empezar de cero, y al entrar veía cómo los números estaban alterados, el tiempo de procesamiento y el response time del DNS se disparaban otra vez, porque debía rehacer todas las consultas. Son solo milisegundos, pero se notan: pasaba de abrir webs apenas hacía clic en un enlace, a tener que esperar uno o dos segundos. Quizás todo era mi imaginación, pero igual quería arreglarlo.
Además, uso Unbound para tener más privacidad, así que cuando se reiniciaba el sistema, no solo se perdía la caché de AdGuard Home, sino también la de Unbound. Me acordé de que cuando usaba Simple DNS Plus, este mantenía una caché persistente incluso tras reinicios: al volver, cargaba el archivo de caché en la RAM y seguía funcionando como si nada.

Como quería que todo lo relacionado al DNS fuera autónomo en el Zimablade, descarté usar Simple DNS Plus y opté por Unbound, que me pareció más fácil de manejar. Pero como mencioné, al reiniciar el sistema o actualizar Docker, igual se perdía la caché.
Buscando y buscando, encontré que se podía hacer una caché persistente para Unbound usando Redis. De esta forma, como Unbound es el upstream de AdGuard Home, los beneficios se heredan: Redis se convierte en la caché de Unbound, almacenada en RAM, pero también guarda un archivo en disco que se recupera tras un reinicio. Así, la caché vuelve a la RAM y no se pierde nada.

Ya pasó casi una semana desde que lo configuré y el archivo de caché ya va por los 5 MB. Hace poco reinicié el Zimablade por una actualización de Docker, y al volver, parece que sí funcionó: ya no he vuelto a tener esos retrasos molestos en las consultas DNS.

Lo único que sigue pasando (y probablemente seguirá ocurriendo) es que AdGuard Home reinicia su caché optimista cada vez, pero con la ayuda de Unbound, ya casi no importa. El tiempo de procesamiento y el de respuesta son mucho más bajos ahora.

