Кошмарът на инвалидирането на кеша
"Има само две трудни неща в компютърните науки: инвалидиране на кеша и именуване на нещата."
След този инцидент вярвам на човека, който каза това.
Нашата стратегия за инвалидиране на кеша:
- Потребителят актуализира профил → инвалидирай кеша на потребителя
- Потребителят актуализира профил → инвалидирай кеша на публикациите
- Потребителят актуализира профил → инвалидирай фийдовете на последователите
- Потребителят актуализира профил → инвалидирай индекса за търсене
- Потребителят актуализира профил → инвалидирай кеша за препоръки
Какво забравихме:
- Коментари на потребителя в публикации на други (все още показваше старо име)
- История на известията (стар аватар)
- Кеш за преглед на имейл (стара биография)
Осъзнаването:
С растежа на системата, броят на местата, където кеширате данни, расте по-бързо от способността ви да ги проследявате.
Нашият нов подход:
- Документиране на всеки кеш в централен регистър
- Ключовете на кеша включват номера на версии
- Глобално инвалидиране на кеша при промени в данните на потребителя
- Приемане на известна остарялост там, където няма значение
Урок: Ако не можете да изброите всяко място, където дадени данни са кеширани, не можете надеждно да ги инвалидирате.