Ця фраза давно стала відомим інтернет-мемом: в будь-якій незрозумілій ситуації зберігайте спокій і чистіть кеш! Схоже, сила Drupal-кешування і справді велика, адже вона здатна допомогти навіть у такій, м’яко кажучи, незрозумілій ситуації, як білий екран смерті або WSOD.
WSOD (білий екран смерті): ой, а що відбувається?
Іноді будь-який користувач або розробник Drupal-сайту може стикнутися із WSOD. Один із частих сценаріїв — коли це відбувається після оновлень модулів чи ядра, а також розробки кастомних модулів.
Сторінка при WSOD стає повністю білою без жодного контенту, попереджень чи помилок — просто велике біле «ніщо». Воно біліше за нескінченні сніги Арктики, адже так само незрозуміло, куди ж рухатися далі.
Але, як ми писали вище, зберігайте спокій. Звісно, є способи подолати «білий екран смерті», і їх досить багато. Можна увімкнути відображення помилок, перевірити файли логів чи таблиці Watchdog, вимкнути модулі, які могли спричинити проблеми, збільшити ліміти пам’яті PHP, якої могло не вистачити сайту, перезапустити веб-сервер, перебудувати права доступу і багато іншого. Іноді різні методи пробуються один за одним, поки якийсь із них не спрацює.
Однак, в деяких випадках чудовий спосіб позбутися WSOD — почистити таблиці кешу. Саме на ньому ми зупинимося детальніше.
Очищення кешу Drupal як один із способів подолати WSOD
Кешування в Drupal — це чудове рішення для підвищення швидкодії сайту. Воно допомагає позбутися безлічі запитів до бази даних та заощадити ресурси і час сервера. Коли сторінка завантажується вперше, Drupal зберігає контент, скрипти, лінки меню і багато іншого в таблиці кешу, і використовує все це знову при наступних завантаженнях. Деякі модулі, наприклад, Big Pipe у Drupal 8, особливо корисні для використання можливостей кешування на всі 100%.
Таблиці кешу повинні оперувати безліччю різноманітних даних. Іноді, з ряду причин, у них виникає проблема. Часто це відбувається під час перенесення сайту на інший сервер. І ось білий екран смерті — тут як тут!
Не варто хвилюватися — варто очистити таблиці кешу. Хоча задачка не видається легкою, враховуючи білий екран смерті, давайте пройдемося по декількох способах її вирішення без написання коду.
Використання бази даних
Ви можете використати PHPMyAdmin або інший інструмент керування базою даних вашого Drupal-сайту. Очистіть (truncate) таблиці з префіксом "cache_" , при цьому не видаляючи їх. Маніпуляції з базою даних вимагають уважності і обережності!
Використання Drush
Альтернативним способом є використання інтерфейсу командного рядка Drush, який часто пропонує швидкі рішення у випадках, коли інші методи недоступні. Хоча і сам Drush іноді буває безсилий, але чому б не спробувати наступні команди Drush для очищення таблиць кешу:
Drupal 7:
drush cache-clear або drush cc all — очищує все одразу
drush cache-clear або drush cc — дозволяє обрати, що саме очищувати
Drupal 8:
drush cache-rebuild або drush cr — на додачу до очищення, відбудовує дані для наступних запитів
Використання сторінки керування швидкодією
Ще один метод — спробувати зайти у admin/config/development/performance і скористатися кнопкою "Clear all caches".
На завершення
Отже, почистити кеш може бути достатньо, аби повернути сайт «до життя» і пофіксити WSOD (білий екран смерті). В будь-якому випадку ви завжди можете звернутись до професійних вирішувачів проблем та «приборкувачів» багів, таких як наша дочірня служба підтримки Drupal-сайтів Drudesk. Вашому сайту не личить надто блідий вигляд! ;) Друпалісти з Drudesk’а визначать точну причину WSOD чи будь-якої іншої помилки і швиденько покращать самопочуття сайту!