TFTL · Пропозиція на погодження · для Avalon · 23.06.2026
Пропонуємо прискорити сайт під рекламний трафік — у спосіб, який спеціально побудований так, щоб НЕ повторити дві минулі проблеми. Прохання переглянути й погодити обраний варіант.
Навіщо
Ми вже виправили памʼять і прискорили базу — сервер витримує навантаження. Кешування дозволяє не рахувати одне й те саме тисячі разів, а віддавати готову відповідь. У піки реклами це суттєво розвантажує сервер. Але саме кеш колись спричинив два інциденти — тому вмикаємо його обережно й тільки за вашим погодженням.
Що дає кеш
Сервер на короткий час запам'ятовує відповідь і віддає її всім, хто питає те саме — замість рахувати щоразу заново.
Чому це важливо для кампанії
Реклама жене багато однакових запитів на каталог. Кеш «склеює» їх в один — сервер тримає пік спокійно.
Чому обережно
Неправильний кеш колись показав застарілу бронь і дані іншого користувача. Ця пропозиція побудована так, щоб цього не сталося.
Головне про безпеку
Ми точно знаємо, чому тоді сталися збої. Це різні причини — і в новому плані кожна закрита окремо.
Було · ризик приватності
Користувач бачив чужий кабінет
Спільний кеш зберіг сторінку залогіненого користувача й віддав її іншому — бо не враховував, що людина авторизована.
Стане · закрито правилом
Будь-який авторизований запит іде повз кеш — у живу систему. Як тільки людина увійшла у свій акаунт — її відповідь ніколи не потрапляє у спільний кеш. Витік чужих даних стає технічно неможливим. Це ж правило коректно обслуговує авторизованих користувачів, які бачать додаткові позиції каталогу.
Було · ризик актуальності
Застаріла бронь квартири
Кеш тримав сторінку 10 хвилин, а статус квартири (бронь із Salesforce) уже змінився — і користувач бачив старе.
Стане · закрито свіжістю
Дуже коротке вікно кешу (секунди) + миттєве скидання при зміні броні. Сама дія бронювання завжди йде в живу систему. Кеш впливає лише на те, як швидко статус побачать ЧУЖІ браузери — це секунди, а не хвилини.
Варіанти на вибір
Кожен наступний дає більше розвантаження, але потребує більше налаштування й тестування. Ми рекомендуємо почати з варіанта A.
Варіант A
Статика + мікрокеш 1–5с
Кешуємо незмінну статику (картинки, скрипти) та публічний каталог на кілька секунд.
Варіант B
A + кеш каталогу 30–60с
Додатково кешуємо публічний каталог довше, зі скиданням кеша при кожній зміні броні.
Варіант C
Залишити як є
Кеш динаміки не вмикаємо. Сервер обслуговує кожен запит наживо.
Окремо зазначимо: «важку» техніку Cloudflare (Cache Reserve, Tiered Cache), яка свого часу й розтягнула проблему надовго, для динамічних сторінок вмикати не будемо — лише для незмінної статики.
Запобіжники
Авторизовані — завжди повз кеш. Кабінет і бронювання — лише жива система. Чужі дані не можуть потрапити у спільний кеш.
Бронювання — завжди наживо. Сама дія ніколи не кешується; кеш впливає лише на швидкість показу статусу іншим — це секунди.
Кешуємо лише явно дозволене. За замовчуванням — без кешу; вмикаємо точково для безпечних публічних сторінок.
Поетапно й оборотно. Вмикаємо в непікові години, з моніторингом і миттєвим відкотом одним рухом.
Як перевіримо перед увімкненням
У нас уже є власний інструмент навантажувального тестування. Перед увімкненням на проді проходимо три етапи.
ЕТАП 1
Статика на CDN
Вмикаємо кеш незмінних файлів (безпечно) і вимірюємо, скільки трафіку це знімає з сервера.
ЕТАП 2
Тест мікрокешу
Вмикаємо мікрокеш обмежено, проганяємо навантажувальний тест і перевіряємо за чек-листом: кабінет і бронь — свіжі та ізольовані.
ЕТАП 3
Прод + моніторинг
Вмикаємо на проді в непікові години, спостерігаємо за метриками й тримаємо миттєвий відкат напоготові.
Критерії успіху: пропускна здатність зростає, навантаження на сервер падає, і нуль інцидентів зі свіжістю чи приватністю на тесті.