2.4.1.1.13. Серверне кешування
Важливі моменти:
- При увімкненні кешування переконайтеся, щоб сайт віддавав заголовки заборони кешування при роботі з його адмін-панеллю, інакше такі сторінки можуть потрапляти в кеш і бути доступними неавторизованим користувачам.
- При використанні сесій PHP автоматично додає в відповіді заголовок
Cache-Controlі кешування за замовчуванням не працює. Для роботи кешування значення обмежувача кешу має бутиpublic(див. session_cache_limiter).
Як працює кешування
При використанні кешування всі відповіді сервера зберігаються в кеші і при надходженні нових запитів замість передачі їх на обробку скриптам сайту повертається вже готова відповідь з кешу. Використання кешування допомагає суттєво знизити навантаження на веб-сервер.
Сторінка не зберігається в кеші:
- Якщо запит містить:
- Заголовок
Cookieз ключемnocacheз непустим значенням і не рівним0. - GET-параметр
nocacheз непорожнім значенням і не рівним0. - Заголовок
Authorizationз непустим значенням і не рівним0.
- Якщо відповідь містить:
- Заголовок
X-Accel-Expiresзі значенням0. - Заголовок
Set-Cookie. - Заголовок
Varyзі спеціальним значенням*. - Заголовок
Cache-Controlз будь-яким із значень:max-age=0,private,no-store,no-cache.
- Якщо в розділі «Налаштування PHP» вимкнений параметр «output_buffering» (коли буферизація вимкнена, nginx не обробляє дані з веб-сервера і не може їх кешувати).
Існуючий кеш ігнорується, якщо запит містить такі ж заголовки/параметри, при яких сторінка не зберігається в кеші (див. вище). ⚠️ Кеш при цьому не перезаписується і не видаляється. Наприклад, при запиті A сторінка була збережена в кеші, потім надійшов запит B з умовами для ігнорування кешу — кеш був проігнорований і сторінка була повернута сайтом, якщо надійде запит C без умов для ігнорування кешу — буде повернутий кеш, який був згенерований для запиту A.
За допомогою заголовка відповіді X-Cache-Status можна стежити за використанням кешу:
- Сторінка була повернута сайтом:
MISS— сторінки не було в кеші.BYPASS— кеш був проігнорований (див. вище).EXPIRED— термін дії кешу закінчився.
- Сторінка була повернута з кешу:
STALE— термін дії кешу закінчився, але з сайту не вдалося отримати актуальну версію сторінки.REVALIDATED— термін дії кешу закінчився, але він був повторно перевірений за допомогою заголовкаIf-Modified-SinceабоIf-None-Match.UPDATING— термін дії кешу закінчився, але сторінка в процесі оновлення з сайту.HIT— сторінка була повернута з кешу.
Коли кеш ігнорується і у відповіді є заголовок “'Cache-Control”', до статусу може бути додано позначення причини, через яку кеш був проігнорований: /PRIVATE, /NO-CACHE, /NO-STORE, /MAX-AGE.
Налаштування кешування
Серверне кешування налаштовується в розділі «Налаштування сайту» на вкладці «Кешування»:
- Режими:
- «Вимкнено» — кешування вимкнено.
- «Увімкнено» — кешування з урахуванням GET-параметрів (для запитів до однієї і тієї ж сторінки з різними GET-параметрами і без них з кешу будуть повертатися різні відповіді).
- «Ігнорувати параметри запиту» — кешування з ігноруванням GET-параметрів (для запитів до однієї і тієї ж сторінки з різними GET-параметрами або без них з кешу буде повертатися однакова відповідь).
- «Термін життя» — через скільки хвилин з моменту останнього використання кеш буде видалено.
- Підбирається індивідуально. Для сайтів з частими оновленнями контенту можна використовувати невеликі значення, з нечастими оновленнями — більш високі.
Очищення кешу
У розділі «Налаштування сайту» на вкладці «Кешування» натисніть «Очистити кеш».