All Projects → elgentos → LargeConfigProducts

elgentos / LargeConfigProducts

Licence: other
Large Configurable Products workaround for Magento 2

Programming Languages

PHP
23972 projects - #3 most used programming language
javascript
184084 projects - #8 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to LargeConfigProducts

magento2-edit-order-email
Magento2 - Edit Order Email from Admin
Stars: ✭ 30 (-63.86%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-translation
magefan.com/magento-2-translation-extension
Stars: ✭ 35 (-57.83%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-login-as-customer
Allows admin to login as a customer (enter to customer account).
Stars: ✭ 104 (+25.3%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
magento-2-security
Magento 2 Security extension FREE. Security extension gives store owners the ability to detect the IP addresses that are intentionally attacking their store at any given time. Therefore, they have timely measures to prevent this issue such as blocking those IP addresses or sending warning emails to store owners.
Stars: ✭ 40 (-51.81%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-lazyload
magefan.com/magento-2-image-lazy-load-extension
Stars: ✭ 47 (-43.37%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-dsu
No description or website provided.
Stars: ✭ 18 (-78.31%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-catalog
Fixes for some known Magento 2 issues in Catalog
Stars: ✭ 23 (-72.29%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
magento2-guest-to-customer
Guest to Customer for Magento2 - Quickly and easily convert existing guest checkout customers to registered customers.
Stars: ✭ 66 (-20.48%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-wysiwyg-advanced
Extend TinyMCE 4 & 5 tools in Magento 2
Stars: ✭ 60 (-27.71%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-blog-sample-data
Sample data for Magento 2 blog extension
Stars: ✭ 15 (-81.93%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-geoip
Detect Country by IP in Magento 2
Stars: ✭ 51 (-38.55%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
DiscountCodeUrl
Magento 2 module that applies a discount code automatically via URL
Stars: ✭ 33 (-60.24%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-dsu-client
No description or website provided.
Stars: ✭ 17 (-79.52%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-notifications
Notify the Magento 2 admin user about disabled caches or new customer reviews.
Stars: ✭ 20 (-75.9%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-blog-m22
Fixes for Blog on Magento 2.2.x
Stars: ✭ 21 (-74.7%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
magento-2-infinite-scroll
Magepow Infinite Scroll extension Free hepls website loading content and products without reloading page
Stars: ✭ 17 (-79.52%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-conflict-detector
magefan.com/magento2-conflict-detector
Stars: ✭ 40 (-51.81%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-blog-comments-recaptcha
module-blog-comments-recaptcha
Stars: ✭ 17 (-79.52%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
Dev-Tools-Magento-2-Module
A collection of utilities meant to improve the experience of developing modules for Magento without breaking existing functionality.
Stars: ✭ 18 (-78.31%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
magento2-pimcore-bridge
Magento 2 module for Pimcore integration.
Stars: ✭ 28 (-66.27%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module

Elgentos_LargeConfigProducts

This extension is built to work around the problems Magento 2 is causing when using configurable products with extremely large amounts of simple products associated to it. Magento 2 can handle up to around 3000 associated simple products pretty well. Above that, it becomes extremely slow and sometimes unusable (such as webserver timeouts).

This version is only compatible with Magento 2.3.X

Example

peek 2018-01-19 10-14

Problems it tries to solve

The main problems are;

  • In the frontend, Magento 2 loads all variations (associated simple products) in a giant JSON object and renders that into the DOM. This JSON object is 20 megabytes for 10k variations.
  • In the backend, this JSON is also built and passed to a UI component wrapped in XML. PHP's xmllib is not able to append extremely large XML structures to an existing XML structure.

We have created workaround for both problems. In the frontend, we offload fetching the JSON blob through an AJAX request. The JSON itself can be pre-warmed using a console command and is stored in Redis. We chose Redis over the Magento cache system itself because Redis is not flushed when the entire Magento cache is flushed (for example, during deployment).

When the product page is loaded and there is no cache entry, it will create it then. This will of course take longer than pre-warming the cache entries.

In the backend we use DOMDocument's and the LIBXML_PARSEHUGE constant to handle the extremely large XML structure.

This extension is free to use. If you find any bugs, please let us know. It has been tested on Magento 2.2.2 on PHP 7.0.

Console command

This extension comes with a console command, php bin/magento lcp:prewarm. This console command pre-warms the JSON blobs so your customers don't have to wait for the cache to build up on the first hit on the product page.

The command has a few options;

--products 123,456,789 - define for which product ID(s) you want to run the prewarmer

--storecodes english,dutch,german - define for which store code(s) you want to run the prewarmer

--force true - force the prewarmer to overwrite existing entries. Otherwise the prewarmer will skip product/storecode combinations that already have an entry.

Magento 2.3.X

Magento 2.3.0 includes integrated message queue management using RabbitMQ, this has replaced the renatocason/magento2-module-mq module used for dynamic pre warming of configurable products after saving.

To use RabbitMQ messaging with this module you will require a RabbitMQ server accessible by Magento.

https://devdocs.magento.com/guides/v2.3/install-gde/prereq/install-rabbitmq.html

Configure the server in your env.php file

'queue' =>
  array (
    'amqp' =>
    array (
      'host' => 'magento2_rabbitmq_1',
      'port' => 5672,
      'user' => 'guest',
      'password' => 'guest',
      'virtualhost' => '/'
     ),
  ),

After installing the module run setup:upgrade to create the message queue. Confirm the message queue exists with

bin/magento queue:consumers:list

Start the message queue consumer with

bin/magento queue:consumers:start elgentos_magento_lcp_product_prewarm

To test dynamic updating of the cache edit and save a configurable product (parent or child)

You will see the prewarm process updating the cache

Processing 67..
Prewarming
Prewarming MH01 for store en (1/2)
Prewarming MH01 for store de (2/2)
Done prewarming

You can run the consumer as a background process. You may need to manage the consumer with a supervisor process to ensure it always runs. Alternatively if you are using Docker the consumer can run as a standalone container set to always restart.

Release Notes

0.4.0 - gaiterjones - 04.2020
Compatibility with Magento 2.3.x using built in AQMP/RabbitMQ integration
Removed requirement for renatocason/magento2-module-mq
Updated swatch-renderer-mixin updateBaseImage
Disabled configurable-customer-data from requirejs orginally used to auto select first option, not working in 2.3.x
Added option to disable cache per customer group so that group 0 is always used. Use this if you do not have customer group pricing

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].