Кеш і швидкість магазину
Де магазин зберігає кеш і як це обрати: файли, база, Redis чи Memcached. І що натиснути, коли вітрина показує старе.
На цій сторінці
Кеш — це пам’ять магазину про те, що він уже порахував. Зібрана сторінка категорії, список мов, налаштування, розібрані характеристики: порахувати це заново коштує часу, а дістати з кешу — майже ні.
Магазин користується кешем сам, налаштовувати його не обов’язково. Але одне рішення варто ухвалити свідомо: де цей кеш лежить.
Де обирається
«Система» → «Обслуговування», картка «Де магазин зберігає кеш».
Там видно, що обрано зараз і що доступне на вашому сервері. Недоступне не просто згашене — поруч написано, чому: «на сервері немає підтримки Redis, її встановлює хостинг».
Вибір записується в налаштування сервера (файл .env), а не в базу даних. Інакше
вийшло б коло: щоб прочитати з бази, який кеш обрано, магазину потрібен кеш, який
цим налаштуванням і обирається.
Що обрати
| Сховище | Коли підходить |
|---|---|
| Файли | Усталений вибір для нових магазинів. Працює на будь-якому хостингу і нічого не потребує. Підходить більшості. |
| База даних | Коли файли чомусь недоступні. Працює скрізь, але кожне звернення до кешу — це запит до бази: на сторінці їх набігає кілька десятків. |
| Redis | Найшвидший варіант і єдиний, що витримає магазин на кількох серверах. Потрібен встановлений Redis і розширення PHP — це встановлює хостинг. |
| Memcached | Швидкий окремий сервер кешу. Розумний вибір, якщо він уже стоїть у вашого хостера. |
Коротка відповідь для більшості: залиште файли. Переходити на Redis має сенс, коли магазин переріс один сервер або коли хостинг і так його пропонує.
Як перемкнути
- Оберіть сховище.
- Заповніть поля з’єднання, якщо вони з’явилися (у Redis — сервер, порт, пароль, номер бази).
- Натисніть «Перевірити з’єднання».
- Натисніть «Перемкнути».
Магазин перевіряє з’єднання до збереження і не дає перемкнутися на сховище, яке не відповідає. Це не прискіпливість: магазин, переведений на непрацюючий кеш, перестає відкриватися цілком — разом із панеллю, з якої це можна було б полагодити.
Пароль після збереження назовні не віддається. Порожнє поле пароля означає «залишити збережений» — так ви можете виправити лише порт, не набираючи пароль заново.
Що робити, якщо магазин показує старе
Кеш іноді треба скинути вручну — наприклад, ви виправили файл теми просто на сервері або завантажили дані повз панель. У тому самому «Системі → Обслуговуванні» є кнопки:
| Кнопка | Коли натискати |
|---|---|
| Скинути сторінки вітрини | Вітрина показує стару верстку або старі ціни |
| Перезібрати шаблони теми | Правка теми не видна на вітрині |
| Скинути дані кешу | Списки та довідники віддають застаріле |
| Скинути весь кеш | Коли не допомогло нічого з переліченого |
У звичайній роботі ці кнопки не потрібні: магазин скидає потрібне сам, коли ви редагуєте товари, категорії, сторінки, знижки й налаштування.
Сторінки вітрини
Окремо від кешу даних магазин зберігає готові сторінки вітрини — це те, що найдужче впливає на швидкість для покупця.
Сторінка збирається один раз, а далі віддається готовою. Різниця на живому магазині: зібрати категорію заново — близько трьохсот мілісекунд, віддати готову — близько п’ятдесяти.
Із цього сховища навмисно виключені сторінки, які в кожного свої: кошик, оформлення замовлення, кабінет покупця, обране, порівняння та підказки пошуку. Покупець, який увійшов, і співробітник магазину завжди бачать свіжу сторінку — тому, редагуючи тему, тримайте панель відкритою в сусідній вкладці: вам буде видно зміни одразу.
Що варто знати про сервер
Файловий кеш складається в теку магазину і потребує лише прав на запис.
Redis і Memcached — це окремі програми на сервері, магазин їх не встановлює. Якщо хостинг їх не пропонує, вибір просто не буде доступним, і магазин чесно про це напише.
Кешу Redis варто задати межу пам’яті та витіснення старого — інакше він зростатиме, доки не займе всю пам’ять сервера. Це робиться один раз у налаштуваннях самого Redis і зазвичай входить у роботу хостингу.