Відповідаємо простими словами на базові питання про кеш: що це і навіщо потрібно, коли потрібно його чистити і як це робиться, а також як налаштувати кешування на сайті.
Основні поняття
Кеш — це місце, куди комп’ютер тимчасово зберігає дані, що часто використовуються, щоб швидше отримати до них доступ у майбутньому. Також слово кеш може означати самі файли в цьому сховищі.
Кешування – це процес збереження даних у кеш. Правила цього процесу встановлює адміністратор програми або сайту. У налаштуваннях сервера можна вибрати, що саме пристрої відвідувачів повинні зберігати як довго.
Для чого потрібен кеш
Кеш допомагає прискорити роботу сайтів та додатків. Це відбувається за рахунок того, що при виконанні дій, що повторюються, комп’ютер бере частину даних з кешу замість того, щоб щоразу завантажувати їх з сервера або заново проводити обчислення.
Наприклад, ви заходите на сайт, де працює кешування. Вперше сторінка відкриватиметься довше, тому що доведеться завантажити з сервера всі її компоненти. Але частина даних збережеться в кеш браузера, і коли ви відкриєте сторінку знову, це відбудеться швидше, тому що даних доведеться завантажувати менше.
За такою ж логікою можна сказати, що холодильник також кеш. Ми зберігаємо там їжу з тієї ж причини, через яку комп’ютер зберігає дані — для швидкого доступу. Уявіть, якщо потрібно було б ходити в магазин щоразу, коли захотілося поїсти. Погодьтеся, набагато зручніше купити продуктів одразу на тиждень і ходити вже до холодильника.
Цікавий факт — перша стаття про кеш вийшла у 1967 році в журналі IBM Systems Journal. Спочатку ця технологія називалася «високошвидкісний буфер», але редактор журналу попросив вигадати більш простий термін. Через відсутність варіантів він сам запропонував слово «кеш» (англ. cache — «схованка», «склад»; від фр. cacher — «ховати»). В решті решт так воно й прижилося.
Навіщо чистити кеш
Поки що все звучить так ніби кеш це геніальний винахід: знижує навантаження на сервер, прискорює роботу додатків та сайтів. Здавалося б, все чудово. Але іноді кеш все ж таки доводиться чистити. Ось кілька ситуацій, коли це необхідно.
Іноді дані у кеші старіють. Через це може виникнути ситуація, коли на сайті щось змінили, але браузер цього не знає, тому що бере дані з кешу. У результаті сторінка завантажується криво або ще гірше — працює некоректно. Наприклад, товари не додаються до кошика, не спрацьовують кнопки чи ще щось.
У такій ситуації зазвичай справа не в самому кешуванні, а в неправильних налаштуваннях на сервері. Адже саме сервер повинен сказати браузеру, які файли можна кешувати і який кеш повинен мати термін придатності. Отже, якщо кешування ламає сайт, вина скоріше не на відвідувачі сайту, а на його розробнику/адміністраторі.
Кеш може займати багато місця. Якщо взагалі ніколи його не чистити, розмір кешу може розростися і до кількох гігабайт. Особливо швидко він росте у додатках соцмереж та месенджерах на смартфонах. Така ціна мемів та відео з котиками. 🙂
Отже, якщо на смартфоні починає закінчуватися місце, гляньте налаштування телеграма, інстаграма або фейсбука. Можливо, зможете звільнити значний обсяг пам’яті лише очистивши кеш.
Як очистити кеш
У Safari використовуйте клавіші ⌥+⌘+E. Це миттєво очистить весь кеш.
У всіх інших браузерах використовуйте клавіші Ctrl+Shift+Backspace (Windows) або ⇧+⌘+Backspace (Mac). Далі оберіть період, за який потрібно видалити дані, та поставте галочку в пункті, де йдеться про кеш.
Якщо вказані вище комбінації не працюють, ми зібрали покрокові інструкції з очищення кешу популярних браузерів в окремій статті:
Як обійти кеш
Найбільше це може бути необхідно в момент розробки сайту, коли ви змінили щось в панелі керування, але результат не відображається. Чистити кеш сайту після кожного невеликого оновлення втомлює. Але є декілька способів як завантажити сторінку в обхід кешу.
1. Зайти на сторінку в режимі інкогніто. У цьому режимі браузер ігнорує те, що зберіг, і скачує все безпосередньо з сервера. Відкрити режим інкогніто зазвичай можна на верхній панелі браузера (Файл > Нове приватне вікно). Або використовуйте один із шорткатів: Ctrl+Shift+N (⇧+⌘+N) або Ctrl+Shift+P (⇧+⌘+P).
2. Додати параметри до URL-адреси. Спробуйте додати знак питання і якісь цифри до адреси сторінки, щоб він виглядав якось так vashdomen.com/page/?1. Для браузера це буде вже нова адреса, яка повинна мати свій кеш. Мінус цього способу в тому, що цифру в параметрі щоразу доведеться змінювати.
Як налаштувати кешування на сайті
На базовому рівні це працює так: адміністратор сайту вказує в налаштуваннях веб-сервера, які типи файлів браузер повинен кешувати і як довго файли кожного типу повинні зберігатися в кеші. Коли термін придатності кеша закінчується, браузер це розуміє та оновлює файли у сховищі.
Термін придатності кешу часто варіюють для різних типів файлів. Наприклад, зображення на сайті зазвичай змінюються рідше, їх можна залишати в кеші на місяць. HTML та CSS файли можна зберігати тиждень, скрипти — 1 день, а PHP взагалі не кешувати. Це не те, щоб найоптимальніші значення, швидше, просто приклад, як можна зробити.
Універсальний спосіб — використовувати файл .htaccess. Це файл із налаштуваннями веб-сервера Apache. У нашому випадку необхідно налаштувати саме модуль mod_expires. Саме він потрібний, щоб підказувати браузеру правила кешування.
Як користуватися файлом .htaccess
<IfModule mod_expires.c> #включаємо модуль ExpiresActive On #за замовчуванням кеш в 5 секунд ExpiresDefault "access plus 5 seconds" #кешувати зображення на місяць ExpiresByType image/x-icon "access plus 2592000 seconds" ExpiresByType image/gif "access plus 2592000 seconds" ExpiresByType image/jpeg "access plus 2592000 seconds" ExpiresByType image/png "access plus 2592000 seconds" #кешувати HTML та CSS-файли на тиждень ExpiresByType text/css "access plus 604800 seconds" ExpiresByType text/html "access plus 604800 seconds" #кешувати скрипти на день ExpiresByType text/javascript "access plus 86400 seconds" ExpiresByType application/x-javascript "access plus 86400 seconds" </IfModule>
Сподіваємося, за коментарями у команді зрозуміло, що до чого. MIME-тип для файлів PHP там не вказаний, тому на них пошириться інтервал за замовчуванням (5 секунд). Це не зашкодить, навіть навпаки — не доведеться завантажувати сторінку вдруге, якщо відвідувач зайде кудись і одразу натисне кнопку «Назад».
Ще один спосіб — використовувати плагін. Підійде, якщо ваш сайт зроблено на CMS (WordPress, OpenCart, Joomla, Drupal). Зручність такого способу в тому, що не потрібно лізти в системні файли, налаштовується за допомогою графічного інтерфейсу. Це простіший і зрозуміліший варіант для новачків.
Більше того, в таких плагінах, крім налаштувань кешування, часто буває додатковий функціонал для оптимізації сайту. Наприклад, можливість зменшити розмір картинок, підключити CDN, видалити зайве з бази даних.
У себе на віртуальному хостингу ми використовуємо веб-сервер LiteSpeed і автоматично встановлюємо плагін LiteSpeed Cache для всіх клієнтів, які використовують WordPress. Ось стаття з описом його можливостей:
Як налаштувати плагін LiteSpeed Cache для WordPress
Що далі
Часто у розмові про кеш також згадують куки (cookies). Це окрема технологія, про яку ми також маємо статтю. У ній так само розповідаємо, що це і коли їх потрібно чистити, а також чому на багатьох сайтах попереджають про їх використання та просять їх прийняти.