Компромиси при сложността на кеширането
"Нека добавим кеширане, за да е по-бързо."
6 часа по-късно: "Защо кешираният отговор е грешен?"
Кеширането разменя простота за скорост. Сега трябва да мислите за:
- Кога да инвалидирате
- Cache stampedes (бурни заявки при изтичане)
- Сервиране на остарели данни
- Загряване на кеша
- Консистентност на разпределен кеш
Какво се случи:
Кеширахме API отговор, който включваше потребителски специфични данни. Ключът на кеша не включваше ID на потребителя. Всеки потребител виждаше данните на първия потребител в продължение на 6 часа, докато някой забележи.
Въпроси преди кеширане:
- Данните специфични ли са за потребителя?
- Колко често се променят?
- Каква е цената на сервиране на остарели данни?
- Можете ли лесно да ги инвалидирате?
Урок: Най-бързият кеш е този, който не ви трябва. Първо оптимизирайте заявката. Добавете кеширане когато сте измерили реалното въздействие.