»  Кеширование  »  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. После этого окно исчезнет и больше появляться не будет.

Как полностью удалить 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 будет полностью удален с сервера.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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. Добрый день Дмитрий,
    прошу Вас подсказать, надо включать 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.

  4. Больше месяца использую связку:
    W3 Total Cache (кэширование) + Fast Velocity Minify (минификация).
    Результат:
    Google PageSpeed Insights — 95/99, но Имитация загрузки страницы ВСЕ зеленные!!!
    GTmetrix (Лондон) — кол-во запросов уменьшилось в 2 раза, время в 2 раза….

    И может быть такое счастье?

  5. Похоже вы зубы съели с этим плагином возможно подскажите как быть. Экспериментировал с настройками тотал кеш + редис (установлен на хостинге и плагин к нему в вп) + автооптимайз. В результате пришел к ситуации: на не посещенной странице изменения отображаются сразу, на посещенной ранее отображаются сразу, но только при условии, что прошло 30-40 минут с последних изменений и никакая чистка кеша не помогает. В результате автооптимайз удалил, редис хостер утверждает тоже отключен, остался тотал+Fast Velocity Minify и проблема описанная выше с получасовым кешем. При этом удаляю тотал, руками через фтп все его файлы и все записи с таблицы опций в бд которые он после себя оставляет. Все равно что-то кеширует страницу на пол часа.

    • В теории может быть кеширование в браузере, которое имеет свои записи в .htaccess.

  6. Добрый день! Есть плагин курса валют, который на сайте выведен с помощью виджета, и по какой то причине он не обновляется. При деактивации плагина курсов валют и новой активации — дата и сами курсы обновляется, поэтому как я понимаю, причина именно в W3 Total Cache. Не подскажите в какую сторону смотреть в настройках плагина, чтобы добавить исключения виджета?

    • Здравствуйте!
      Если вы говорите, что при деактивации плагина курсов валют и новой активации — дата и сами курсы обновляется, то причина может быть и не в W3TC, хотя плагин кеша обычно первый претендент.
      Сбросьте весь кеш, деактивируйте W3TC, проверьте как работает ваш плагин без W3TC.
      Если причина в W3TC, экспортируйте его настройки в файл, сбросьте все настройки и попробуйте включать настройки по одной.
      Сначала выясните, в какой группе проблема (Кеш, Кеш в браузере, Кеш базы данных итд.), потом включайте по одной настройки в группе.
      Если причина не в W3TC, то выключите все плагины и включайте по одному.

      • Думаю проблема именно в W3TC, так как на другом сайте стоит такой же плагин курса валют и обновляется, так как плагин W3TC деактивирован.

        • Даже на одном сервере на соседних сайтах один и тот же плагин может работать по-разному.
          Попробуйте сбросить кеш и деактивировать W3TC, чтобы выяснить, вызывает он проблему или нет.

          Если вызывает, то попробуйте отключить минификацию и объединение css и js.
          Performance — General Settings — Minify — Disable.

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

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