{"id":9924,"date":"2025-08-15T11:34:41","date_gmt":"2025-08-15T07:34:41","guid":{"rendered":"https:\/\/www.cs-cart.com\/blog\/?p=9924"},"modified":"2025-10-27T14:44:02","modified_gmt":"2025-10-27T10:44:02","slug":"several-server-tweaks-and-recommendations-to-get-maximum-speed-out-of-cs-cart-and-multi-vendor","status":"publish","type":"post","link":"https:\/\/www.cs-cart.com\/blog\/several-server-tweaks-and-recommendations-to-get-maximum-speed-out-of-cs-cart-and-multi-vendor\/","title":{"rendered":"Several Server Tweaks and Recommendations for CS-Cart Speed Optimization"},"content":{"rendered":"\n<p>Before we start talking about increasing performance and CS-Cart speed optimization, it is crucial to define what you want to improve, how, and why. Any optimization means fixing or optimizing the project code or increasing your server capacity, and this already affects the financial side.<\/p>\n\n\n\n<p>All the recommendations and actions for optimizing projects presented in this article can disrupt your store operation. Therefore, we ask you to be as careful as possible in your actions. If something went wrong, cancel your previous actions and seek help from the specialists of CS-Cart or your hosting provider with a description of what caused the problem.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Update_CS-Cart_Store_Builder_or_Multi-Vendor_all_themes_and_add-ons\"><\/span>Update CS-Cart Store Builder or Multi-Vendor, all themes and add-ons<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Updating the CS-Cart core, themes, and add-ons is important because the new versions contain performance patches, patches to improve and optimize workflows and to fix bugs and vulnerabilities. If you\u2019re planning an <a href=\"https:\/\/www.cs-cart.com\/blog\/best-practices-for-successful-e-commerce-migration\/\">eCommerce migration<\/a> to a new version of CS-Cart or Multi-Vendor, keeping your core, themes, and add-ons up to date ensures a smoother migration process.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Update_the_PHP_version_and_take_advantage_of_its_full_potential\"><\/span>Update the PHP version and take advantage of its full potential<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Find out what the maximum <a href=\"https:\/\/docs.cs-cart.com\/latest\/install\/system_requirements.html\">supported <\/a>PHP version is available for your current version of CS-Cart <a href=\"https:\/\/www.cs-cart.com\/store-builder\" title=\"\">Store Builder<\/a> or Multi-Vendor.<\/p>\n\n\n\n<p><a href=\"https:\/\/scalesta.com\/\" title=\"\">Scalesta <\/a>conducted load tests for a default CS-Cart theme without third-party add-ons. These tests show that project performance can be increased by updating the PHP version.<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>PHP Version<\/th><th>Performance (CS-Cart 4.18 Ultimate)<\/th><\/tr><\/thead><tbody><tr><td>PHP 7.0 (Deprecated)<\/td><td>107.31 RPS\/s<\/td><\/tr><tr><td>PHP 7.1 (Deprecated)<\/td><td>106.91 RPS\/s<\/td><\/tr><tr><td>PHP 7.2 (Deprecated)<\/td><td>109.82 RPS\/s<\/td><\/tr><tr><td>PHP 7.3 (Deprecated)<\/td><td>116.93 RPS\/s<\/td><\/tr><tr><td>PHP 7.4 (Deprecated)<\/td><td>126 RPS\/s<\/td><\/tr><tr><td>PHP 8.0 (Deprecated)<\/td><td>128 RPS\/s<\/td><\/tr><tr><td>PHP 8.1<\/td><td>127 RPS\/s<\/td><\/tr><tr><td>PHP 8.2<\/td><td>129 RPS\/s<\/td><\/tr><tr><td>PHP 8.2 + JIT<\/td><td>132 RPS\/s<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Please, note that not all add-ons and CS-Cart versions support the <a href=\"https:\/\/scalesta.com\/blog\/your-guide-to-the-latest-php-versions\/\">latest PHP versions<\/a> which may make your project unavailable. Before updating your live store, check the update on your local computer or on the staging server. Alternatively, you can refer to <a href=\"https:\/\/marketplace.cs-cart.com\/developers-catalog.html\">developers<\/a>.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Use_OPcache\"><\/span>Use OPcache<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>How does a PHP app work? PHP opens the files with code, aggregates them, analyzes, assigns tokens, compiles, and then runs them. Since there can be hundreds of such files, the process of opening, reading, and compiling them can be resource-intensive. But because files don\u2019t change very often, it&#8217;s inefficient to compile them every time.<\/p>\n\n\n\n<p>This is where OPcache comes in. It saves the result of the compilation to memory so it can be reused, eliminating the need to compile on every request. When your code changes, OPcache automatically invalidates and recompiles the changed files.<\/p>\n\n\n\n<p>It\u2019s worth noting that <strong>OPcache is enabled in most PHP builds by default<\/strong>, and in most cases, it doesn&#8217;t require any additional configuration. However, this may not apply to all hosting providers \u2014 some disable file change checks, which can lead to issues during updates.<\/p>\n\n\n\n<p><strong>Tip:<\/strong> While setting opcache.validate_timestamps=0 in production can reduce overhead by skipping timestamp checks on every request, we <strong>do not recommend<\/strong> this approach. Although it may slightly improve performance, especially on older drives, <strong>modern SSDs and NVMe disks perform timestamp checks extremely quickly<\/strong>, and the impact on performance is negligible.<\/p>\n\n\n\n<p>More importantly, using outdated cached files after updates can lead to <strong>critical errors<\/strong>, particularly if the database structure has changed. This setting also makes debugging significantly harder and can delay problem resolution when contacting support.<\/p>\n\n\n\n<p>A better and more balanced approach is to use <strong>opcache.revalidate_freq<\/strong>, which allows for less frequent timestamp checks without sacrificing reliability.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Use_FastCGI_PHP-FPM_NGINX\"><\/span>Use FastCGI (PHP-FPM) + NGINX<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>FastCGI is a highly efficient way to connect PHP with a web server. <strong>PHP-FPM<\/strong> (FastCGI Process Manager) works seamlessly with <strong>NGINX<\/strong>, and this combination is optimized for performance right out of the box\u2014no extra layers required.<\/p>\n\n\n\n<p>Some legacy setups still rely on <strong>Apache with mod_php<\/strong>, or worse, <strong>NGINX \u2192 Apache (mod_php) \u2192 PHP<\/strong>. While Apache supports .htaccess files, which can be convenient for beginner administrators, this flexibility comes at a cost: it typically results in a <strong>3\u20137% performance drop<\/strong> compared to NGINX + PHP-FPM.<\/p>\n\n\n\n<p>Moreover, when using Apache, it\u2019s important to be aware of potential <strong>default configuration vulnerabilities<\/strong>. Excessive reliance on .htaccess, unnecessarily enabled modules, or poorly configured directory listing settings can all introduce security risks. For example, <a href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2021-41773\"><strong>CVE-2021-41773<\/strong> <\/a>describes a vulnerability that allowed attackers to bypass access restrictions due to misconfigured Apache settings.<\/p>\n\n\n\n<p class=\"has-cyan-bluish-gray-background-color has-background\"><strong>Best Practice: <\/strong>Avoid mod_php entirely. If you must use Apache, connect PHP via php-fpm or mod_proxy_fcgi. This approach delivers better performance, improved security, and aligns with modern PHP deployment standards.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Limit_PHP_and_Tune_Runtime_Parameters\"><\/span>Limit PHP and Tune Runtime Parameters<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Contrary to instinct, giving PHP more resources doesn&#8217;t always make it faster. Over-allocating can lead to resource contention and unpredictable crashes when the OOM Killer starts terminating processes.<\/p>\n\n\n\n<p>Recommended Defaults:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">max_execution_time = 60<\/pre>\n\n\n\n<p>Avoid running long scripts by default. Processes like import\/export may require higher limits, but it&#8217;s better to decompose large tasks into smaller units for better reliability.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">memory_limit = 512M<\/pre>\n\n\n\n<p>This is a safe upper bound for most stores. Don\u2019t go overboard\u2014remember that MySQL, Redis, and the OS also need memory.<\/p>\n\n\n\n<p class=\"has-cyan-bluish-gray-background-color has-background\"><strong>Note<\/strong>: For large stores with lots of products or third-party add-ons, memory_limit = 768M or 1024M may be appropriate. Monitor actual usage before raising it.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Update_and_Optimize_the_Database_MySQL\"><\/span>Update and Optimize the Database (MySQL)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Convert All Tables from MyISAM to InnoDB<\/h3>\n\n\n\n<p>In the latest versions of CS-Cart, there is already a practice in place: all new features, as well as redesigned modules and tables, are created using InnoDB.<br \/>This allows the database, during heavy and long-running queries, to lock only the specific rows being accessed rather than the entire table, and also ensures better data integrity thanks to support for transactions and foreign keys.<\/p>\n\n\n\n<p>Below are the main differences between InnoDB and MyISAM:<\/p>\n\n\n\n<ul>\n<li>InnoDB supports row-level locking, while MyISAM only supports table-level locking.<\/li>\n\n\n\n<li>InnoDB supports referential integrity, including foreign key constraints (RDBMS), whereas MyISAM does not (DBMS).<\/li>\n\n\n\n<li>Compared to MyISAM, InnoDB uses a transaction log for automatic recovery and handles high loads more effectively.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Optimize MySQL Settings<\/h3>\n\n\n\n<p>Exact values depend on your RAM and workload, but here&#8217;s the general direction:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">wait_timeout = 60<\/pre>\n\n\n\n<p>Long-running queries are typically a sign of poor design. Rewrite or optimize them rather than extending the timeout.<\/p>\n\n\n\n<p class=\"has-cyan-bluish-gray-background-color has-background\"><strong>Tip<\/strong>: Use MySQLTuner to check current settings and get suggestions based on real-world usage. It\u2019s an invaluable tool for tuning MySQL.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Consider MariaDB<\/h3>\n\n\n\n<p>As of 2025, <strong>MariaDB 10.11 LTS<\/strong> is a mature and MySQL-compatible alternative that offers a range of unique features, such as improved handling of virtual columns, advanced storage engines, and system tables in the Aria format.<\/p>\n\n\n\n<p>However, it&#8217;s worth noting that in some benchmark comparisons, <strong>MySQL 8<\/strong> has shown better performance in specific scenarios \u2014 for example, with complex queries involving JSON.<\/p>\n\n\n\n<p>The best choice depends on your workload: if <strong>insert performance<\/strong>, <strong>replication<\/strong>, or <strong>CPU load<\/strong> are critical, <strong>MariaDB<\/strong> may be the better option. For other use cases, <strong>MySQL<\/strong> might perform better with careful tuning and optimization.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Increase_Server_Capacity\"><\/span>Increase Server Capacity<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Not every website performance issue can be resolved simply by increasing configuration values in PHP, MySQL, or updating server software. At some point, you may need to consider <strong>upgrading your server resources<\/strong> or switching to a higher-tier hosting plan. This often becomes necessary due to factors like the installation of additional add-ons, a growing number of products, or simply an increase in website traffic.<\/p>\n\n\n\n<p>We also recommend scaling up server capacity during <strong>sales periods or marketing campaigns<\/strong> to handle traffic spikes effectively.<\/p>\n\n\n\n<p class=\"has-cyan-bluish-gray-background-color has-background\"><strong>Tip:<\/strong> Consider using <strong>cloud or containerized solutions<\/strong> like <strong>AWS<\/strong>, <strong>DigitalOcean<\/strong>, <strong>Docker<\/strong>, or <strong>Kubernetes<\/strong>. These platforms offer the flexibility and scalability needed as your project grows.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Use_HTTP2_and_TLS_13_and_Consider_Enabling_HTTP3\"><\/span>Use HTTP\/2 (and TLS 1.3), and Consider Enabling HTTP\/3<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>In this case, <strong>performance and security go hand in hand<\/strong>. <strong>HTTP\/2<\/strong>, supported by most modern browsers and web servers, brings significant improvements over HTTP\/1.1 \u2014 such as <strong>request multiplexing<\/strong>, <strong>header compression<\/strong>, and <strong>more efficient connection usage<\/strong>. Many hosting providers and servers (like <strong>NGINX<\/strong> and <strong>Apache<\/strong> with the proper modules) enable HTTP\/2 by default when HTTPS is used.<\/p>\n\n\n\n<p>Practical Steps:<\/p>\n\n\n\n<ul>\n<li><strong>NGINX: <\/strong>Make sure your configuration includes the ssl http2 directive, e.g.:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">listen 443 ssl http2;<\/pre>\n\n\n\n<ul>\n<li><strong>Apache: <\/strong>Ensure mod_http2 and mod_ssl are enabled. Your config should include:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">Protocols h2 http\/1.1<\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Consider Enabling HTTP\/3 (Based on QUIC)<\/strong><\/h3>\n\n\n\n<p><strong>HTTP\/3<\/strong>, built on <strong>QUIC<\/strong>, can further improve performance \u2014 especially in high-latency conditions or on mobile networks.<br \/>Support is already available in many <strong>CDNs<\/strong> (like <strong>Cloudflare<\/strong> and <strong>Fastly<\/strong>) and modern browsers. Web servers such as <strong>NGINX<\/strong> (via the <strong>quiche<\/strong> library) and <strong>Caddy<\/strong> also support HTTP\/3, although additional configuration is required.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Enable TLS 1.3 for Better Security and Speed<\/strong><\/h3>\n\n\n\n<p><strong>TLS 1.3<\/strong> is strongly recommended. It enhances security while also speeding up connection setup thanks to its <strong>reduced handshake process<\/strong>.<\/p>\n\n\n\n<p>How to Enable TLS 1.3:<\/p>\n\n\n\n<ul>\n<li><strong>NGINX: <\/strong>Make sure you&#8217;re using <strong>OpenSSL 1.1.1+<\/strong> and your config includes:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">ssl_protocols TLSv1.3 TLSv1.2;<\/pre>\n\n\n\n<ul>\n<li><strong>Apache: <\/strong>With <strong>Apache 2.4.38+<\/strong> and <strong>OpenSSL 1.1.1+<\/strong>, use:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">SSLProtocol -all +TLSv1.2 +TLSv1.3<\/pre>\n\n\n\n<p>You can verify support using tools like <a href=\"https:\/\/www.ssllabs.com\/ssltest\/\"><strong>SSL Labs Test<\/strong><\/a> or similar SSL checkers.<\/p>\n\n\n\n<p class=\"has-cyan-bluish-gray-background-color has-background\"><strong>Tip: HTTP\/3<\/strong> (QUIC-based) can deliver even greater performance benefits, especially for mobile users and high-latency connections. Most modern browsers and CDNs already support it.<\/p>\n\n\n\n<p>Also, be sure to <strong>enable TLS 1.3<\/strong> \u2014 it offers both <strong>stronger security<\/strong> and <strong>faster data exchange<\/strong> thanks to reduced handshake overhead.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"CS-Cart_tweaks_and_options\"><\/span>CS-Cart tweaks and options&nbsp;<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>If, after making changes, your project becomes unavailable, cancel the changes and contact CS-Cart technical support and your hosting provider. They will help you with the setup.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Use Imagick<\/h3>\n\n\n\n<p>GD and Imagick are two different PHP extensions to handle graphics. Both modules are quite similar, but Imagick gives better results when creating thumbnail images. At the same time, it consumes less memory.<\/p>\n\n\n\n<p>To enable Imagick, change the tweak value to imagick in the <em>$config[\u2018tweaks\u2019]<\/em> array of the <em>config.local.php file<\/em>. <a href=\"https:\/\/i.gyazo.com\/04980f445d52d9b0243fcd3989a070a7.jpg\">See this screenshot<\/a>.<\/p>\n\n\n\n<p><strong>Enable Imagick<\/strong><strong>:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\u2018image_resize_lib\u2019 =&gt; \u2018imagick\u2019,<\/pre>\n\n\n\n<p class=\"has-cyan-bluish-gray-background-color has-background\"><strong>Note:<\/strong> If Imagick is not installed on the server, explicitly forcing its use may cause errors. You should implement a check to ensure the component is available before using it.<\/p>\n\n\n\n<p>Also note that if you have \u201cauto\u201d in your config.local.php file next to image_resize_lib, then once you have imagick installed, it will be used by default.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Enable APCu for cache and Redis for storing sessions<\/h3>\n\n\n\n<p>We recommend using <strong>APCu<\/strong> for caching in CS-Cart and <strong>Redis<\/strong> for storing user sessions. This separation helps reduce the load on the database and file system, speeding up request handling and improving overall application responsiveness.<\/p>\n\n\n\n<p>However, it&#8217;s important to consider that introducing additional services like Redis increases the complexity of your infrastructure. It adds another potential point of failure, which also needs to be monitored and managed \u2014 for example, using tools like systemd or supervisord to ensure availability and automatic restarts.<\/p>\n\n\n\n<p>Additionally, storing cache in APCu means it will be held in the memory of each PHP process. This can increase overall RAM usage and may affect performance on systems with limited resources. APCu also works only with mod_php or php-fpm, and is <strong>not suitable<\/strong> for multi-server configurations where shared cache is required.<\/p>\n\n\n\n<p>Before adopting this approach, ensure your infrastructure is prepared to handle these specifics and that all components can operate reliably.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$config['cache_backend'] = 'apcu';<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">$config['session_backend'] = 'redis';<\/pre>\n\n\n\n<p>Enabling these settings in your configuration file requires <strong>APCu (PHP 7.0+)<\/strong> and <strong>Redis<\/strong> to be properly installed and configured on your server. Before editing the configuration, make sure both APCu and Redis are available. If you&#8217;re unsure or need assistance, consult your system administrator or hosting provider.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Use mysqldump for backup<\/h3>\n\n\n\n<p><strong>Mysqldump<\/strong> is a server-side utility available on most modern hosting environments, and it&#8217;s widely recommended by system administrators for creating database backups. For reliable backups, it&#8217;s best to use mysqldump.<\/p>\n\n\n\n<p>In CS-Cart, support for mysqldump is available, but <strong>disabled by default<\/strong>. This is because on some hosting platforms, mysqldump may be unavailable, unstable, or require elevated permissions. As a result, CS-Cart uses a built-in PHP-based backup method by default, which offers broader compatibility but may be less efficient for large databases.<\/p>\n\n\n\n<p>To enable mysqldump for backups, add the following parameter:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$config['tweaks']['backup_db_mysqldump'] = true;<\/pre>\n\n\n\n<p>to the $config[&#8216;tweaks&#8217;] array in your config.local.php file.<\/p>\n\n\n\n<p>Once enabled, CS-Cart will use mysqldump to create database backups \u2014 a faster and more resource-efficient method, especially beneficial for large projects, as it reduces the load on PHP processes during the backup operation.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"216\" src=\"https:\/\/i0.wp.com\/www.cs-cart.com\/blog\/wp-content\/uploads\/mysqldump.jpg?resize=800%2C216&#038;ssl=1\" alt=\"MySQLdump\" class=\"wp-image-20053\" srcset=\"https:\/\/i0.wp.com\/www.cs-cart.com\/blog\/wp-content\/uploads\/mysqldump.jpg?w=1024&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.cs-cart.com\/blog\/wp-content\/uploads\/mysqldump.jpg?resize=300%2C81&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.cs-cart.com\/blog\/wp-content\/uploads\/mysqldump.jpg?resize=768%2C207&amp;ssl=1 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Implement a backend lock in the cache generation processes<\/h3>\n\n\n\n<p>In recent versions of CS-Cart, a new feature has been introduced to <strong>prevent simultaneous cache generation by multiple users<\/strong>. This is especially useful under high load conditions \u2014 for example, after clearing the cache or on the first run after deployment.<\/p>\n\n\n\n<p>To enable this protection, add the following line to your config.local.php file:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$config['lock_backend'] = 'database';<\/pre>\n\n\n\n<p>With this setting, CS-Cart will use the <strong>database<\/strong> to store lock information, preventing concurrent execution of resource-intensive operations.<\/p>\n\n\n\n<p><strong>Redis<\/strong> is also supported as a lock storage backend, which is recommended for high-load projects, especially in distributed environments. To enable Redis locking, use:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$config['lock_backend'] = 'redis';<\/pre>\n\n\n\n<p class=\"has-cyan-bluish-gray-background-color has-background\"><strong>Important:<\/strong> Make sure Redis is available and properly configured in your CS-Cart installation. Using Redis can improve performance and reduce database load when handling locks.<\/p>\n\n\n\n<p>This mechanism not only helps <a href=\"https:\/\/www.simtechdev.com\/cloud\/wiki\/user\/deploy\/\">prevent <\/a>server overload during cache generation, but also ensures <strong>correct order processing<\/strong>. In recent CS-Cart versions, the locking system is also used when interacting with payment systems like <strong>Stripe<\/strong> and <strong>PayPal<\/strong>. Without active locking, order statuses may be updated incorrectly, potentially leading to inventory inconsistencies and other critical issues in business logic.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_to_find_and_fix_problems_with_CS-Cart_performance_without_programming_skills\"><\/span>How to find and fix problems with CS-Cart performance without programming skills<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Even without coding skills, you can <strong>identify and fix performance bottlenecks<\/strong> in your CS-Cart or CS-Cart Multi-Vendor store. Below are practical tips and metrics to help you perform basic diagnostics on your own.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Use the Built-In CS-Cart Debugger<\/strong><\/h3>\n\n\n\n<p>CS-Cart includes a built-in <strong>debug mode<\/strong>, which can be activated by adding ?debug to the URL. Once enabled, a &#8220;bug&#8221; icon will appear in the top right corner. Clicking it will reveal detailed information:<\/p>\n\n\n\n<ul>\n<li><strong>SQL<\/strong> \u2014 number and execution time of database queries<\/li>\n\n\n\n<li><strong>Blocks<\/strong> \u2014 block loading speed and memory usage<\/li>\n\n\n\n<li><strong>Page generation time<\/strong> \u2014 total time to render the page<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Key_Metrics_to_Monitor\"><\/span>Key Metrics to Monitor<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th><strong>Metric<\/strong><\/th><th><strong>Recommended Value<\/strong><\/th><\/tr><\/thead><tbody><tr><td><strong>Page generation time<\/strong><\/td><td>\u2264 1 sec \u2014 excellent performance<br \/>1\u20132 sec \u2014 normal for most projects<br \/>&gt; 2 sec \u2014 a reason to review and optimize<\/td><\/tr><tr><td><strong>Database query time<\/strong><\/td><td>\u2264 0.1 sec \u2014 good performance<br \/>&gt; 0.1 sec \u2014 check the query and optimize indexes<\/td><\/tr><tr><td><strong>Number of blocks from cache<\/strong><\/td><td>\u2265 5 out of 20 \u2014 acceptable, but the more blocks served from cache, the better the performance<\/td><\/tr><tr><td><strong>Block render time<\/strong><\/td><td>\u2264 0.1 sec \u2014 fast0.<br \/>1\u20132 sec \u2014 acceptable but should be monitored&gt; 2 sec \u2014 a reason for a detailed investigation<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-cyan-bluish-gray-background-color has-background\"><strong>Tip:<\/strong> Enable the debugger and click through pages \u2014 you&#8217;ll see which blocks or modules are slow and where the bottlenecks are.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Check Caching Settings<\/strong><\/h3>\n\n\n\n<p>Go to <strong>Design \u2192 Themes<\/strong> in the admin panel and verify whether <strong>&#8220;Rebuild cache automatically&#8221;<\/strong> is turned <strong>off<\/strong>.<br \/>If your site is live and you&#8217;re not constantly editing templates, this option should be <strong>disabled<\/strong>.<\/p>\n\n\n\n<p>In config.local.php, ensure this is set:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$config['tweaks']['disable_block_cache'] = false;<\/pre>\n\n\n\n<p>Sometimes, developers accidentally leave caching disabled, which can drastically reduce performance.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Optimize Images<\/strong><\/h3>\n\n\n\n<ul>\n<li>Run your site through <strong>Google PageSpeed<\/strong> to identify large images.<\/li>\n\n\n\n<li>Right-click an image \u2192 <strong>Inspect Element<\/strong> to view actual vs. displayed size.<\/li>\n\n\n\n<li>Use lossless image compression tools like tinypng.com, imagecompressor.com, and DupliChecker.com to easily&nbsp;<a href=\"https:\/\/www.duplichecker.com\/compress-jpeg-to-50kb.php\" target=\"_blank\" rel=\"noopener\">compress JPEG to 50kb<\/a>&nbsp;without losing quality..<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Review Add-Ons<\/strong><\/h3>\n\n\n\n<p>Some third-party add-ons can generate <strong>hundreds of SQL queries<\/strong>, especially on pages with many entities (products, brands, etc.).<\/p>\n\n\n\n<p><strong>What to do:<\/strong><\/p>\n\n\n\n<ol>\n<li>Enable the debugger and go to a slow page.<\/li>\n\n\n\n<li>Check the <strong>SQL tab<\/strong> to see which blocks or add-ons are generating long or excessive queries.<\/li>\n\n\n\n<li>In the <strong>Blocks tab<\/strong>, identify which blocks take the longest to load.<\/li>\n\n\n\n<li>Go to <strong>Add-ons \u2192 Manage add-ons<\/strong>, disable suspicious ones, and retest performance.<\/li>\n\n\n\n<li>If you have many third-party add-ons, disable all, then re-enable them one by one to isolate the culprit.<br \/><\/li>\n<\/ol>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Review Cron Jobs &amp; External Syncs<\/strong><\/h3>\n\n\n\n<p>Tasks like <strong>backups<\/strong>, <strong>third-party sync<\/strong>, or <strong>email campaigns<\/strong> may run during peak hours and strain your server.<\/p>\n\n\n\n<p class=\"has-cyan-bluish-gray-background-color has-background\"><strong>Tip:<\/strong> Schedule cron jobs during off-peak hours (e.g., nighttime), based on your traffic analytics.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Focus on Metrics \u2014 Not Just Scores<\/strong><\/h4>\n\n\n\n<p>Tools like <strong>Google PageSpeed<\/strong> can give <strong>misleading results<\/strong>, especially under mobile testing conditions. Even large-scale eCommerce sites often score low, which doesn\u2019t always reflect actual user experience.<\/p>\n\n\n\n<p><strong>Tips:<\/strong><\/p>\n\n\n\n<ul>\n<li>Monitor metrics regularly.<\/li>\n\n\n\n<li>Compare results before and after changes.<\/li>\n\n\n\n<li>Don\u2019t rely solely on test scores \u2014 observe real-world behavior.<br \/><\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Summary &amp; Best Practices:<\/strong><\/h4>\n\n\n\n<ul>\n<li><strong>Disable &#8220;Rebuild cache automatically&#8221;<\/strong> unless you&#8217;re actively developing.<\/li>\n\n\n\n<li>Make sure disable_block_cache is <strong>not set to true<\/strong> by mistake.<\/li>\n\n\n\n<li><strong>Compress images<\/strong>, especially on the homepage and product pages.<\/li>\n\n\n\n<li><strong>Audit and disable heavy add-ons<\/strong> that slow down SQL or block rendering.<\/li>\n\n\n\n<li><strong>Use the built-in debugger<\/strong> and think critically about performance metrics.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Advice from Andrey Myagkov, CTO of CS-Cart:<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>&#8220;Don\u2019t obsess over test scores\u2014focus on real-world metrics and user experience. A low PageSpeed score doesn\u2019t necessarily mean your site is slow. Consider where your server is physically located and where your users are. If your store is hosted in Australia, but your customers are in Europe, delays will come from distance, not poor optimization. In many cases, simply hosting a copy of your site closer to your audience can make a big difference. Remember\u2014tests are a guide, not a final verdict.&#8221;<\/p>\n<\/blockquote>\n\n\n\n<p>You can find tips for quick optimization and finding performance issues for your CS-Cart Store Builder and CS-Cart Multi-Vendor project without programming skills in <a href=\"https:\/\/simtechdev.com\/blog\/how-to-fix-performance-issues-with-cs-cart-and-multi-vendor-on-your-own\/\">this post<\/a>. And we also have <a href=\"https:\/\/simtechdev.com\/blog\/performance-testing-you-need-to-%20think-critically\/\">an article<\/a> with important metrics telling about factors affecting the site speed.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"cs-cart-products-block\">\n<h2><span class=\"ez-toc-section\" id=\"All_CS-Cart_Products_and_Services\"><\/span>All CS-Cart Products and Services<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li><span>\u2605<\/span> CS-Cart Multi-Vendor: <a href=\"https:\/\/www.cs-cart.com\/multi-vendor-personal-demo.html\" target=\"_blank\" rel=\"noopener noreferrer\">free online demo<\/a><\/li>\n<li><span>\u2605<\/span> CS-Cart Store Builder: <a href=\"https:\/\/www.cs-cart.com\/store-builder\/demo\" target=\"_blank\" rel=\"noopener noreferrer\">free online demo<\/a><\/li>\n<li><span>\u2605<\/span> Mobile App: <a href=\"https:\/\/apps.apple.com\/us\/app\/multi-vendor-app-by-cs-cart\/id1304872157\" target=\"_blank\" rel=\"noopener noreferrer\">App Store<\/a>, <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.simtech.multivendor\" target=\"_blank\" rel=\"noopener noreferrer\">Google Play<\/a> <\/li>\n<li><span>\u2605<\/span> Cloud Hosting: <a href=\"https:\/\/www.cs-cart.com\/cloud-hosting\" target=\"_blank\" rel=\"noopener noreferrer\">why it&#8217;s the best for CS-Cart<\/a><\/li>\n<li><span>\u2605<\/span> Customer Care: <a href=\"https:\/\/www.cs-cart.com\/support-service\" target=\"_blank\" rel=\"noopener noreferrer\">why it&#8217;s more than just a tech support<\/a><\/li>\n<li><span>\u2605<\/span> Upgrade subscription: <a href=\"https:\/\/helpdesk.cs-cart.com\/upgrade-subscriptions.html\" target=\"_blank\" rel=\"noopener noreferrer\">select and reactivate<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Before we start talking about increasing performance and CS-Cart speed optimization, it is crucial to define what you want to<\/p>\n","protected":false},"author":84973,"featured_media":20054,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[11,5],"tags":[],"aioseo_notices":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.cs-cart.com\/blog\/wp-content\/uploads\/several-tweaks-to-boost-performance-of-cs-cart.jpg?fit=1536%2C1024&ssl=1","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.cs-cart.com\/blog\/wp-json\/wp\/v2\/posts\/9924"}],"collection":[{"href":"https:\/\/www.cs-cart.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cs-cart.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cs-cart.com\/blog\/wp-json\/wp\/v2\/users\/84973"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cs-cart.com\/blog\/wp-json\/wp\/v2\/comments?post=9924"}],"version-history":[{"count":1,"href":"https:\/\/www.cs-cart.com\/blog\/wp-json\/wp\/v2\/posts\/9924\/revisions"}],"predecessor-version":[{"id":20462,"href":"https:\/\/www.cs-cart.com\/blog\/wp-json\/wp\/v2\/posts\/9924\/revisions\/20462"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cs-cart.com\/blog\/wp-json\/wp\/v2\/media\/20054"}],"wp:attachment":[{"href":"https:\/\/www.cs-cart.com\/blog\/wp-json\/wp\/v2\/media?parent=9924"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cs-cart.com\/blog\/wp-json\/wp\/v2\/categories?post=9924"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cs-cart.com\/blog\/wp-json\/wp\/v2\/tags?post=9924"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}