Varnish и WordPress, возможно ли настоящее кеширование без внешнего плагина? - PullRequest
0 голосов
/ 11 октября 2018

Возможно, это звучит как вопрос новичка в мире Varnish Cache, но почему в WordPress возникает необходимость установить плагин внешнего кэша, чтобы он работал полностью кэшированным?

Веб-сайты корректно загружаются с помощью Varnish, команда curl -I:

HTTP/1.1 200 OK
Server: nginx/1.11.12
Date: Thu, 11 Oct 2018 09:39:07 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
Cache-Control: max-age=0, public
Expires: Thu, 11 Oct 2018 09:39:07 GMT
Vary: Accept-Encoding
X-Varnish: 19575855
Age: 0
Via: 1.1 varnish-v4
X-Cache: MISS
Accept-Ranges: bytes
Pragma: public
Cache-Control: public
Vary: Accept-Encoding

В этой конфигурации по умолчанию установки WordPress не кэшируются.После тестирования нескольких плагинов кеша - некоторые не работают или не работают без сложной конфигурации - я обнаружил, что Swift Performance в их версии Lite, просто активировав опцию Cache, здесь действительно использует все преимущества, и здесь я вижу, что лак работает полностью с оченьхорошие результаты в стресс-тестировании.

Это может быть нормально для одного сайта в одной среде, но с точки зрения общего хостинга, когда у каждого клиента может быть собственная установка WP (или другой CMS), это может быть проблемой.

Итак, суть в том, что невозможно получить полное преимущество кэширования от Varnish без установки сторонних (и сложных) плагинов кэширования?Почему бы не кэшировать все по умолчанию?

Любые предложения и помощь будут приветствоваться, спасибо заранее.

1 Ответ

0 голосов
/ 11 октября 2018

При такой конфигурации по умолчанию установки WordPress не кэшируются

По умолчанию, если вы ничего не измените ни в конфигурации Wordpress, ни в Varnish, все будет работать вместе вТаким образом, страницы Wordpress кэшируются в течение 120 секунд.Таким образом, настоящее кэширование возможно, но оно будет кратковременным и крайне неэффективным.

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

Varnish - это прозрачный прокси-сервер для HTTP-кэширования.Это означает, что по умолчанию использует заголовки HTTP, которые отправляются бэкэндом (Wordpress), например Cache-Control, чтобы принять решение о том, можно ли кэшировать ресурс и как долго.

Фактически Wordpress не отправляет связанные с кэшем заголовки, кроме как в нескольких определенных областях (страницы ошибок, регистрация POST отправка и т. Д.).

Стандартный подход, изложенный здесь настраивает Varnish с самым высоким TTL.При этом:

Varnish понятия не имеет, когда вы обновляете содержимое статьи или меняете тему.Типичное решение этой проблемы заключается в использовании плагина аннулирования кэша, такого как Varnish HTTP Purge.

Требование плагина возникает из-за необходимости очищать кеш при изменении содержимого.

Предположим, вы обновляетеТекст WordPress страницы.Вы уже посещали ту же самую страницу, и она была помещена в кэш Varnish для хранения.Что произойдет при следующем посещении, так это то, что Varnish будет обслуживать всех следующих посетителей таким же, теперь устаревшим контентом.

Плагины Wordpress для Varnish, такие как Varnish HTTP Purge, подключатся кWordpress таким образом, что они будут инструктировать Varnish очищать кеш при обновлении страниц.Это их основная цель.

Такой подход (высокий TTL и очистка кэша) является де-факто стандартом для Varnish.Поскольку у Varnish нет информации о том, когда вы обновляете контент, внутренняя работа по очистке кэша связана с самим приложением.Функция очистки кэша либо встроена в сам код CMS (например, в Magento 2, он поставляется без коробки, без дополнительных плагинов), либо в плагин Wordpress.

...