Кешування відповідей інструментів через Cache-Control
Для розробників, у коді: ваш заголовок Cache-Control вирішує, чи відповідь інструмента використовується повторно — max-age шанується, Age віднімається, лише GET і 2xx, приватно для кожного користувача, не довше десяти хвилин.
Рантайм викликає ваш сервер наживо на кожному ході, якому це потрібно, — якщо ваша власна відповідь не каже, що її можна використати повторно. Налаштування свіжості на формі інструмента немає навмисно: ви знаєте, коли ваші дані змінюються, а ми ні, тож вигадане нами вікно завжди було б хибним від вашого імені.
Правило
Ми шануємо стандартний заголовок.
| Ваша відповідь каже | Ми робимо |
|---|---|
Cache-Control: max-age=300 |
використовуємо її наступні п’ять хвилин замість викликати вас знову |
Cache-Control: max-age=300 з Age: 290 |
використовуємо десять секунд — Age віднімається, тож відповідь, яку ваш CDN уже потримав, не тримається ще ціле вікно |
без заголовка, no-store, no-cache |
викликаємо вас щоразу |
max-age=86400 |
використовуємо десять хвилин — стеля, хай би що казав заголовок |
s-maxage і private ігноруються (ми й так приватний кеш); хибний Age рахується як нуль.
Що кешується і коли
- Лише GET. Інструмент із POST викликається завжди — пропустити виклик, що реєструє заявку чи відкриває тікет, означало б її втратити.
- Лише 2xx, і ніколи тіло, обрізане на ліміті розміру. Помилка викликається знову наступного разу.
- Лише два шляхи читання: виклик від моделі і проактивний запит. Кнопка перевірки в панелі й доставка заявок завжди йдуть наживо.
- Ключ — увесь розв’язаний запит — метод, URL, заголовки, параметри, тіло — захешований, тож
ключ охоплює секрет і токен
{{user}}відвідувача: відповідь, отримана для одного користувача, що увійшов, ніколи не віддається іншому. Ми приватний кеш — єдиний правильний вид для відповіді, отриманої із заголовкомAuthorization, іVaryобробляти не треба. Сирий запит ніколи не зберігається. - Зберігається сире тіло, а
response_pathзастосовується при читанні, тож зміна цього поля діє одразу.
Влучання в кеш усе одно рахується в ліміт викликів за хід, усе одно позначає хід як відповідь інструментом і все одно викликає прив’язану подію.
Що кешувати
Прайс, каталог тарифів, набір категорій, години роботи магазину: надсилайте max-age — це береже
ваш сервер і прискорює відповідь помічника. Баланс, статус замовлення, наявність місця: не
надсилайте.
Задати заголовок варто навіть там, де ваш власний шар уже кешує: він виражає ваш намір у формі, яку може шанувати будь-який клієнт.
Не це: «Кешувати відповіді»
Розширені → Кешувати відповіді на формі інструмента — інший перемикач. Він визначає, чи можна повторне перше питання віддати з кешу відповідей першого ходу рантайму, коли у відповіді брав участь живий інструмент. Він не кешує відповідь вашого сервера і не заощадить вашому API жодного виклику. Вмикайте лише для даних, які рідко змінюються.
Таймаут справжній
Повільний сервер затримує відповідь, на яку хтось чекає, а виклик, що триває понад ліміт — ваш
timeout_ms, щонайбільше десять секунд, — скидається; помічник тоді відповідає без нього.
Кешування повільних, але стабільних частин — найдешевший спосіб вкластися.