#magento #caching #magento2
#magento #кэширование #magento2
Вопрос:
Я работаю над сайтом, разработанным третьей стороной, который является Magento 2.1 и активно использует продукты пакета. Большинство пакетов состоят из 260 дочерних продуктов на выбор, что неизбежно делает загрузку страницы продукта для них невероятно медленной.
В Mage 1 было достаточно просто использовать полностраничное кэширование для кэширования параметров продукта пакета и ускорения загрузки с помощью предварительного кэширования, но FPC в Mage 2 явно сильно отличается.
Основное замедление, по-видимому, связано с блоками формы и параметров, вызываемыми в catalog_product_view.xml для темы, поскольку они перебирают все дочерние продукты перед рендерингом страницы, поэтому я попытался добавить;
cacheable="true"
Для этих конкретных блоков, но это не имеет никакого значения.
У кого-нибудь есть другие идеи о том, как кэшировать страницы продукта Magento 2 bundle?
ПРАВИТЬ ПРАВИТЬ
Я только что попытался подключить базу данных к новой установке Magento 2.1 и вижу, что продукты пакета добавляются в каталог var / page_cache. На клиентском сервере в этот каталог записываются только теги и информация о заголовке.
Итак, новый угол… почему Magento 2 не записывает какой-либо FPC html в каталог page_cache? Возможно, что-то более высокое в дереве ошибочно имеет значение cacheable=false, установленное против него? Я начну копать
Комментарии:
1. способ: magento.stackexchange.com/a/14356/24845 ?
2. спасибо за предложение — это для Magento 1, хотя это полезно демонстрирует, что в Mage1 пакеты кэшируются по умолчанию, но не кэшируются в Mage2
Ответ №1:
Извините, я не могу прокомментировать ваш последний пост.
Вы пытаетесь использовать Varnish в качестве HTTP-кэша? Magento рекомендует использовать Varnish и Redis в качестве серверной части кэша.
Комментарии:
1. Привет, мы не используем Varnish в данный момент, поскольку мы отлаживаем. Даже при использовании стандартной файловой системы FPC должен создавать плоскую версию страницы (за исключением областей с перфорацией / динамических областей), но для рендеринга страницы при каждой загрузке требуется одинаковое количество времени — она по-прежнему перебирает все параметры пакета при каждой загрузке.
2. Вы можете создать внутренний запрос в службу поддержки Magento 2. Но просто попробуйте настроить varnish в вашей локальной среде, для его установки требуется всего 1 час, и я думаю, это решит вашу проблему, поскольку только Varnish будет обрабатывать вашу страницу после первой попытки.
3. Вы пытаетесь добавить $this->_isScopePrivate = false; в свой блок? Как вы думаете, вы установили cacheable=»true» для правильного блока?
4. спасибо за ваши комментарии. Я почти уверен (может быть, ошибаюсь), что включение isScopePrivate в сам блок phtml слишком далеко по цепочке, но попытаюсь отправить отчет в mage. еще раз спасибо
Ответ №2:
Итак, я обнаружил проблему, и это была ошибка, допущенная людьми, создавшими сайт, и создателями модуля magepal magento2-googletagmanager. В обоих случаях блоки имели;
cacheable="false"
в макете XML. Установка этого параметра для любого блока на странице остановит кэширование всей страницы. Поэтому удалите эту строку и добавьте;
$this->_isScopePrivate = true;
В функции blocks __construct. Проблема решена.
Комментарии:
1. Мы не рекомендуем
cacheable=false
или_isScopePrivate
. Мы начали с темы кэширования здесь . Он все еще неполный, но я надеюсь, что это поможет