Кэш продукта Magento 2 Bundle

#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 . Мы начали с темы кэширования здесь . Он все еще неполный, но я надеюсь, что это поможет