»  Кеширование  »  W3 Total Cache: Решение проблем

W3 Total Cache: Решение проблем

W3 Total Cache большой и сложный плагин. Когда он работает правильно — все в порядке, страницы загружаются быстро. Но когда что-то начинает работать не так, приходится искать источник проблемы, найти который бывает непросто из-за размера плагина.

В этой статье вы узнаете решения для часто возникающих проблем W3TC:

Каска и гаечные ключи

Как минифицировать CSS и JS без нарушения работы сайта

Обычно сложно предсказать результат минификации CSS и JS, многие сталкиваются с проблемами при минификации этих файлов. Это зависит от установленных плагинов, темы и их скриптов и стилей. Не существует какого-то общего решения этой проблемы, все зависит от конкретного сочетания CSS и JS.

Почему это происходит?

Есть 3 основные причины, по которым минификация нарушает работу сайта.

1. Нарушена очередность загрузки JS файлов, то есть зависимые файлы загружаются перед главными файлами.

Если у какого-то файла есть обращение к библиотеке jQuery, то он должен загрузиться после файла jquery.js. Поставьте файл jquery.js на первое место в очередности загрузки. Если есть другие файлы, зависимые друг от друга, поставьте их в правильной очередности.

2. Содержимое страницы отображается до того, как загружены важные для отображения контента файлы CSS и JS, из-за чего появляется неровный контент.

Файлы jquery.js и style.css должны быть первыми в списке загрузок. Дайте важным для отображения контента файлам CSS или JS вторые места в приоритете загрузки, даже если это вызывает предупреждение Eliminate render-blocking JavaScript and CSS in above-the-fold content в тесте Гугл.

3. При минификации и объединении файлов возникает ошибка синтаксиса.

Если это случается, то не загружаются все файлы, объединенные в минифицированный файл. В этом случае вам понадобится найти файл, вызывающий ошибку, и исключить его из объединяемых файлов.

Приоритет загрузки и исключение из объединения можно установить вручную в разделе Minify.

    1. Включите режим Manual для минификации файлов.
      В разделе General Settings спуститесь в секцию Minify, выберите режим Manual и сохраните изменения.
    2. Добавьте все JS файлы в ручной список.
      Performance -> Minify, нажмите кнопку help наверху страницы. В появившемся окне спуститесь вниз списка JS файлов и нажмите кнопку Check / Uncheck All для выделения всех JS файлов и нажмите Apply & close. Не добавляйте CSS файлы на этом этапе. Сделайте изменения в JS файлах, чтобы сайт начал работать нормально, не затрагивая CSS файлы.
    3. Установите такой порядок загрузки JS файлов, который не нарушает работу сайта
      • Поставьте файл jquery.js на первое место загрузки.
      • Поставьте все остальные файлы в той очередности, в которой сайт работает правильно.
      • Переносите файлы из секции <head> в секцию <body> по одному, используя non-blocking метод.
      • После каждого изменения очищайте кеш и проверяйте изменения на сайте.

Ручной порядок загрузки JS файлов

Поставьте после файла jquery.js файлы, которые используют библиотеку jQuery, например, jquery-migrate.js или jquery-ui.js. Постарайтесь поставить остальные файлы в соответствии с порядком, в котором они влияют на отображение содержимого страницы. Например, файл functions.js должен быть выше в приоритете загрузки, чем comment-reply.js, потому что functions.js содержит основные скрипты / функции, а загружать comment-reply.js можно позже, когда начнет загружаться часть страницы с комментариями.

Критичные файлы должны быть загружены в начале загрузки страницы, более второстепенные должны загружаться ниже в странице после тега <body> или </body>.

Сохраняйте изменения после каждого шага и проверяйте их на сайте.

Если вы хотите начать сначала, удалите все файлы кнопкой Delete и добавляйте их по одному кнопкой help. Тестируйте разное расположение файлов на странице и оставьте лучший результат.

    1. Добавьте все CSS файлы в ручной список.
      Нажмите кнопку help и добавьте все CSS файлы.
    2. Расположите CSS файлы в порядке важности. Если сайт отображается неправильно, удалите все CSS файлы из ручного и добавляйте их по одному через кнопку help. Проверяйте сайт после каждого изменения и найдите файл, который нарушает внешний вид. Удалите этот файл и не добавляйте его снова.

Следуя этой инструкции вы можете добавить все (или почти все) файлы CSS и JS, минифицировать их и расположить в нужной последовательности, чтобы сайт загружался правильно и количество предупреждений в тесте Гугл уменьшилось до минимума.

Как узнать, работает W3 Total Cache или нет

В результате работы плагина код страницы минифицирован (записан в одну строку), комментарии удалены:

Как выглядит оптимизированная страница

Откройте нужную страницу и посмотрите ее код (В браузере Хром, правой кнопкой на странице и выберите Просмотреть код страницы).

Если вы хотите увидеть служебную информацию о работе плагина, включите режим Debugging в разделе General Settings.

В секции Debug находится 6 чекбоксов, но доступны только те чекбоксы, модули которых включены в разделе General Settings.

Режим debug

Например, на этой картинке доступны 4 чекбокса, потому что только эти 4 модуля включены в разделе General Settings.

Включите все доступные чекбоксы, нажмите Save all settings и сбросьте кеш, если потребуется. После этого откройте нужную страницу и посмотрите ее код. Спуститесь вниз страницы и вы увидите отладочную информацию для каждого активированного модуля.

Отладочная информация W3TC

Так как в разделе Minify стоит настройка Удалять комментарии в html-коде, чтобы увидеть эту информацию временно отключите эту функцию или весь раздел Minify.

Как использовать W3 Total Cache с PHP 7

Если у вас есть проблема несовместимости W3 Total Cache и PHP версии 7, то обновите плагин до последней версии.

Вы могли получить такую ошибку:

Warning: Parameter 1 to W3_Plugin_TotalCache::ob_callback() expected to be a reference, value given in my-site.ru/wp-includes/functions.php on line 1234

Или вы не получали ошибку, но W3 Total Cache перестал сохранять изменения и кешировать сайт. Если вы посмотрите в код страницы в режиме Debug, то увидите, что служебные комментарии W3TC не добавляются.

Так или иначе, эта проблема была решена в плагине версии 0.9.5, обновите плагин до последней версии, сейчас это версия 0.9.5.4. На этом сайте работает W3TC этой версии и установлена PHP версии 7.1, никаких проблем нет, все работает нормально.

Если проблема все еще есть, напишите в комментариях, есть инструкция по решению этой проблемы.

Суть решения в том, чтобы либо вернуться на PHP 5.6, либо изменить &$buffer на $buffer в нескольких файлах на сервере. В этом случае после обновления плагина эти изменения будут заменены новой версией файлов.

Как настроить W3 Total Cache для работы с Memcache

Обычно проблема заключается в том, что модуль Memcached установлен на сервере, но не распознается W3 Total Cache, и тест совместимости W3TC говорит, что Memcached не установлен и не предлагает его в качестве модуля кеширования.

Решение проблемы в том, чтобы установить модуль PECL memcache PHP. Модуль Memcached тоже должен быть установлен на сервере, но для Memcache кеширования также нужен модуль PECL memcache PHP.

Установите оба модуля, — модуль кеширования Memcached и PECL memcache PHP (не PECL memcached PHP). После их установки W3TC распознает этот метод кеширования, и предложит его для работы.

Инструкция по установке обоих модулей находится в разделе Install. Спуститесь ниже для инструкции по установке модуля Memcached (Daemon), после этого установите модуль PECL Memcache PHP.

Как исключить определенные страницы из кеширования

Если вы хотите исключить какие-то страницы из кеширования, то это можно сделать в разделе Page Cache. Спуститесь в секцию Advanced и найдите поле Never cache the following pages. В этом поле уже есть несколько записей по умолчанию. Укажите адрес страницы, которую вы хотите исключить из кеширования в новой строке без учета домена сайта.

Например, если вы хотите исключить страницу https://techbear.ru/w3-total-cache-reshenie-problem из кеширования, то укажите только w3-total-cache-reshenie-problem*

Исключение страницы из кеширования

Сохраните изменения, очистите кеш, включите режим Debug, отключите удаление html-комментариев в коде и загрузите страницу, которую вы исключили из кеширования. Откройте код страницы в браузере, спуститесь вниз страницы и вы увидите комментарий W3TC о том, что кеширование для этой страницы выключено.

Теперь каждому посетителю страницы будет показываться динамическая версия страницы с сервера.

Как выключить всплывающее окно в настройках W3 Total Cache

Через 30 дней после первой установки W3 Total Cache начинает появляться всплывающее окно, которое предлагает поставить ссылку на W3TC на вашем сайте, написать сообщение в Твиттер, поставить оценку плагину на WordPress.org и подписаться на рассылку W3 EDGE.

Маркетинговое всплывающее окно W3TC

Если вы нажмете на «х» в правом верхнем углу, то вы закроете это окно, но оно будет появляться снова.

Чтобы полностью отключить это окно, вместо «х» нажмите Cancel. После этого окно исчезнет и больше появляться не будет.

Если плагин делает работу вашего сайта быстрее, хорошая идея написать отзыв на плагин на WordPress.org.

Как полностью удалить W3 Total Cache

Если вы хотите полностью удалить W3 Total Cache, то вам понадобится доступ к серверу, так как этот плагин оставляет некоторые файлы после удаления из Вордпресс.

  1. Удалите весь кеш плагина кнопкой Purge All Caches в админ баре или в разделе Dashboard.
  2. В разделе General Settings выключите все модули плагина и нажмите Save all settings.
  3. В разделе Плагины деактивируйте W3TC, после этого удалите плагин и все связанные с ним файлы.
  4. Через FTP-клиент или файл менеджер на хостинге откройте папку my-site.ru/wp-content/plugins, и проверьте, что папка W3 Total Cache удалена.
  5. В папке wp-content удалите папки w3tc-config и cache, и файлы
    • advanced-cache.php,
    • db.php,
    • w3-total-cache-config.php,
    • object-cache.php (если модуль object cache был включен).
  6. В корневой папке сайта откройте файл wp-config.php.
    Удалите строку “define (WP_CACHE’, true);” или замените «true» на «false» и сохраните файл.
  7. В корневой папке сайта откройте файл .htaccess.
    W3 Total Cache добавил свои настройки, которые начинаются с комментария «# BEGIN W3TC [тип кеширования]” и заканчиваются комментарием»# END W3TC [тип кеширования]”.
    Комментариев несколько, можно воспользоваться поиском по документу Ctrl+F.
    Удалите комментарии и сохраните файл.

После этого W3TC будет полностью удален с сервера.

Читайте также:

  1. Полный гид по W3 Total Cache. Введение в кеширование

  2. Как настроить W3 Total Cache: подробное описание

  3. W3 Total Cache: Решение проблем

  4. W3 Total Cache: Настройки для виртуальных хостингов

Комментарии:

  1. Добрый день Дмитрий,
    прошу Вас подсказать, надо включать HTTP/2 push?
    и как проверить результат?
    /не где не нашел ответ на этот вопрос/
    Заранее благодарен.

    • Здравствуйте, Сергей,
      HTTP/2 push можно включить, если поддерживает сервер (Apache 2.4.17 и nginx 1.9.5).
      проверить можно в заголовке страниц, должно быть что-нибудь подобное:

      Если в W3TC отключена минификация для авторизованных пользователей, то изменений не будет.

      • Спасибо за ответ!
        Но мне на хостинге ответили: «В рамках виртуального хостинга HTTP/2 PUSH не поддерживается.»
        и так бывает…
        Хотя Apache 2.4.39 и nginx 1.14.1.

  2. Добрый день!
    Огромное Вам спасибо за подробное описание плагина W3 Total Cache.

    Подключил на хостинге (SSD, PHP memory_limit 128МБ, OPcache 96МБ) Memcache 128МБ.
    В W3 Total Cache включил секции «Page Cache», «Minify», «Database Cache», «Object Cache». Все «Test passed».

    У меня у Вам вопрос, какое выставить обновления обновляются (сохранение) в кеше.
    Секции:
    «Page Cache: Cache Preload»,
    «Minify: Advanced»,
    «Database Cache: Advanced»,
    «Browser Cache: General»
    Заранее благодарен.

    • Здравствуйте, спасибо за отзыв.

      Если не ошибаюсь, везде стандартные настройки, кроме browser cache.

      «Page Cache: Cache Preload» = 900, 10.
      «Minify: Advanced» = 86400
      «Database Cache: Advanced» = 180, 3600
      «Browser Cache: General» = 691200 (8 дней), 3600, 31536000

      После изменений сбросьте весь кеш в Performance -> Purge All Caches, чтобы изменения попали в новый кеш.

  3. Добрый вечер!
    Можно ли удалить плагин W3TC минуя админку?
    Если удалить папку с плагином с сервера вручную, а затем проделать все шаги начиная с шага 5, каков будет результат? Нужно ли при этом что-то удалять в Базе данных?

    • Здравствуйте,

      Можно удалить и с сервера, результат будет такой же.
      В базе данных вы можете удалить в таблице Options все записи, которые начинаются с w3tc_.

      • Большое спасибо за ответ. В таблице cron нашла записи с w3_pgcache_prime. Это тоже нужно удалить или не будет влиять. Не могу разобраться с чего начинается и чем заканчивается запись

        • Да, в расписании тоже можно удалить.

          «Не могу разобраться с чего начинается и чем заканчивается запись»

          Вы это имеете в виду?

          Как удалить записи W3TC из таблицы Options базы данных

Оставьте комментарий

Do NOT follow this link or you will be banned from the site!