elgentos / largeconfigproducts
Requires
- php: ~5.5.0|~5.6.0|~7.0.0|~7.1.0|~7.2.0
- magento/module-configurable-product: ^100.2.8
- renatocason/magento2-module-mq: ^1.0
- renatocason/magento2-module-mq-mysql: ^1.1
- dev-master
- 0.3.5
- 0.3.4
- 0.3.3
- 0.3.2
- 0.3.1
- 0.3.0
- 0.2.17
- 0.2.16
- 0.2.15
- 0.2.14
- 0.2.13
- 0.2.12
- 0.2.11
- 0.2.10
- 0.2.9
- 0.2.8
- 0.2.7
- 0.2.6
- 0.2.5
- 0.2.4
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.10
- 0.1.9
- 0.1.8
- 0.1.7
- 0.1.6
- 0.1.5
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.0
- dev-replace-mcason-with-magento-mq
- dev-analysis-XaRjbx
- dev-eliminate-registry
- dev-eliminate-registry-1
- dev-add-config-options
- dev-peterjaap-patch-1
This package is auto-updated.
Last update: 2024-08-29 04:31:35 UTC
README
此扩展是为了解决当使用大量关联简单产品配置产品时,Magento 2造成的各种问题而构建的。Magento 2可以很好地处理约3000个关联简单产品。超过这个数量,它变得非常慢,有时甚至无法使用(例如,web服务器超时)。
此版本仅与Magento 2.3.X兼容
示例
试图解决的问题
主要问题是:
- 在前端,Magento 2在巨大的JSON对象中加载所有变体(关联简单产品),并将其渲染到DOM中。对于10k个变体,此JSON对象大小为20兆字节。
- 在后台,此JSON也会构建并传递给一个包装在XML中的UI组件。PHP的xmllib无法将极其大的XML结构附加到现有的XML结构中。
我们已经为这两个问题创建了解决方案。在前端,我们通过AJAX请求卸载获取JSON blob。使用控制台命令预加热JSON本身,并将其存储在Redis中。我们选择Redis而不是Magento缓存系统本身,因为Redis在清空整个Magento缓存时不会被刷新(例如,在部署期间)。
当产品页面加载且没有缓存条目时,它会创建它。当然,这会比预加热缓存条目花费更长的时间。
在后台,我们使用DOMDocument的LIBXML_PARSEHUGE
常量来处理极其大的XML结构。
此扩展免费使用。如果您发现任何错误,请通知我们。它已在PHP 7.0上的Magento 2.2.2上进行了测试。
控制台命令
此扩展包含一个控制台命令php bin/magento lcp:prewarm
。此控制台命令预加热JSON blob,以便您的客户在产品页面上首次点击时不必等待缓存构建。
该命令有一些选项;
--products 123,456,789
- 定义您要运行预加热器的产品ID
--storecodes english,dutch,german
- 定义您要运行预加热器的商店代码
--force true
- 强制预加热器覆盖现有条目。否则,预加热器将跳过已具有条目的产品/商店代码组合。
Magento 2.3.X
Magento 2.3.0包含使用RabbitMQ的集成消息队列管理,这已替换了用于在保存后动态预加热配置产品的renatocason/magento2-module-mq模块。
要使用此模块中的RabbitMQ消息,您需要一个可由Magento访问的RabbitMQ服务器。
https://devdocs.magento.com/guides/v2.3/install-gde/prereq/install-rabbitmq.html
在env.php文件中配置服务器
'queue' =>
array (
'amqp' =>
array (
'host' => 'magento2_rabbitmq_1',
'port' => 5672,
'user' => 'guest',
'password' => 'guest',
'virtualhost' => '/'
),
),
安装模块后,运行setup:upgrade以创建消息队列。使用以下命令确认消息队列存在:
bin/magento queue:consumers:list
使用以下命令启动消息队列消费者:
bin/magento queue:consumers:start elgentos_magento_lcp_product_prewarm
要测试缓存的动态更新,请编辑并保存一个配置产品(父或子)
您将看到预加热过程正在更新缓存
Processing 67..
Prewarming
Prewarming MH01 for store en (1/2)
Prewarming MH01 for store de (2/2)
Done prewarming
您可以将其作为后台进程运行消费者。您可能需要使用监督进程管理消费者,以确保其始终运行。如果您使用Docker,则消费者可以作为一个始终重新启动的独立容器运行。
版本说明
0.4.0 - gaiterjones - 2020.04
使用内置AQMP/RabbitMQ集成与Magento 2.3.x兼容
移除了对renatocason/magento2-module-mq的依赖
更新了swatch-renderer-mixin中的updateBaseImage方法
禁用了configurable-customer-data,该功能原本在requirejs中用于自动选择第一个选项,但在2.3.x中不工作
添加了禁用按客户组缓存的功能,以便始终使用组0。如果您没有客户组定价,请使用此功能