Zum Inhalt springen
GDPR-compliant B2B shops
All Articles Performance

Performance Optimization for B2B Stores with Large Catalogs

11 min read
PerformanceB2BShopwareCachingElasticsearch

B2B stores face a unique performance challenge: catalogs with 50,000, 100,000 or more products, complex price calculations with customer-specific tiers, and extensive filter navigation must respond in milliseconds. According to an analysis by Google, 53 percent of mobile users abandon a website when load time exceeds three seconds (Google, 2024). In the B2B context, where buyers place dozens of orders daily, every delay becomes a productivity problem. This article covers the most important levers for running Shopware-based B2B stores performantly even with large data volumes.

Why Performance Is Business-Critical in B2B Commerce

Unlike B2C, where performance primarily affects conversion rates, in the B2B environment it directly impacts the efficiency of entire procurement teams. A buyer who places 30 orders per day and waits two seconds each time for pages to load loses several hours of productive work time per month. Multiply that across a procurement team of ten staff members and the economic damage quickly becomes visible.

The challenge with B2B stores lies in the complexity of data queries. While a B2C store can get by with uniform pricing and simple category navigation, a B2B store must calculate customer-specific prices, check individual availability, and filter personalized assortments with every page load. Each of these operations generates database queries that, without targeted optimization, quickly become bottlenecks. According to the Digital Commerce Report by the EHI Retail Institute, 68 percent of surveyed B2B retailers consider system performance one of their top three technical challenges (EHI Retail Institute, 2025).

Redis as the Caching Backbone: Session, Object and HTTP Cache

Redis is the central building block of every performant Shopware installation. As an in-memory data store, Redis delivers response times in the single-digit millisecond range and is ideally suited for three caching layers: session cache, object cache, and HTTP cache. By moving these caching layers from disk to memory, the store's response time drops dramatically.

The session cache stores user sessions in Redis instead of the database or filesystem. For B2B stores with many concurrently logged-in buyers, this significantly reduces database load. The object cache keeps frequently queried data structures such as categories, product lists, and configurations in memory. The HTTP cache stores fully rendered page outputs and serves them directly for identical requests without burdening the application server.

Configuring Redis for B2B stores requires special attention to cache invalidation. Customer-specific prices mean that cached product pages are not universally valid for all users. Shopware addresses this through cache tags and context-dependent cache keys that account for customer group, currency, and tax status. A thoughtful cache-warming strategy that pre-computes popular category and product pages complements the reactive caching approach.

Session Cache

User sessions in RAM instead of the database. Reduces DB load with many parallel users by up to 40 percent. Configuration via Shopware environment variables.

Object Cache

Categories, configurations and product structures in memory. Shortens application response time by an average of 60 percent for repeated queries.

HTTP Cache

Fully rendered pages served directly from Redis. Response times under 20 milliseconds for non-personalized content. Ideal complement for category overview pages.

Elasticsearch: Search and Filtering for Large Catalogs

Shopware's native database search reaches its limits with catalogs exceeding 20,000 products. Elasticsearch takes over full-text search, faceted filtering, and sorting, delivering results in under 50 milliseconds even with hundreds of thousands of products. For B2B stores, Elasticsearch is not optional but a fundamental prerequisite for an acceptable user experience.

The index configuration determines search quality and performance. For B2B catalogs, a separate index per sales channel with optimized mappings for technical product attributes is recommended. Product numbers, EAN codes, and manufacturer-specific designations must be indexed as keyword fields to enable exact matches. Description texts and product names receive analyzers with stemming and synonym expansion for fuzzy searches.

A frequently underestimated aspect is aggregation performance for faceted filters. When a B2B catalog has 50 filterable attributes and each category contains thousands of products, Elasticsearch must compute dozens of aggregations for every page load. Through selective aggregations that only compute visible filters and by using the composite aggregation type for paginated filter values, the load can be significantly reduced.

Database Tuning: MySQL and MariaDB for B2B Workloads

Even with Redis and Elasticsearch, the relational database remains a central component of the store architecture. Orders, customer data, shopping carts, and configurations are stored in MySQL or MariaDB. The default configuration of these database systems is designed for general workloads and leaves significant optimization potential for B2B stores with large data volumes.

The most important tuning parameters are the InnoDB buffer pool, which should ideally comprise 70 to 80 percent of available RAM, the query cache configuration, which in Shopware installations is often counterproductive and should be disabled, and index optimization on frequently queried tables such as product, product_translation, and customer_group. Analyzing slow query logs identifies the most severe bottlenecks.

For stores with very high read volumes, read replicas offer a solution. Write operations go to the primary server while read queries are distributed across one or more replicas. Shopware natively supports this configuration through Doctrine DBAL configuration. In practice, a single read replica reduces response time during peak loads by 30 to 50 percent by offloading read operations from the primary database.

MeasureEffortImpactTypical Improvement
Redis Session CacheLow (2-4h)HighDB load -40%
Enable ElasticsearchMedium (1-2 days)Very highSearch 10x faster
Tune InnoDB Buffer PoolLow (1h)MediumQueries 20-30% faster
Set Up Read ReplicasHigh (2-3 days)HighResponse time -30-50%
CDN for Static AssetsLow (2-4h)HighTTFB -60%
Implement Lazy LoadingMedium (1 day)MediumLCP -40%

CDN Strategy: Delivering Static and Dynamic Content

A Content Delivery Network reduces latency by serving static content such as images, CSS, JavaScript, and fonts from servers geographically close to the user. For B2B stores with international clientele, a CDN is particularly valuable since buyers from different countries access the same catalog. According to HTTP Archive, static assets account for an average of 75 percent of data transferred on an e-commerce page (HTTP Archive, 2025). CDN caching of these assets significantly reduces effective load time for the majority of page views.

CDN configuration for Shopware requires careful separation of public and private content. Product images and theme assets are public and can be cached aggressively. API responses with customer-specific prices are private and must not be stored in the CDN. Shopware sets correct Cache-Control headers for this purpose, which the CDN must respect. Additional security comes from cache tags that enable targeted invalidation of individual resources when product images or category structures change.

Lazy Loading and Frontend Optimization

Frontend performance starts with conscious resource loading. Lazy loading defers the loading of images, videos, and iframes until they scroll into the browser's visible area. For B2B catalog pages with 50 or more products per page, lazy loading reduces the initial data volume by up to 70 percent, significantly improving the Largest Contentful Paint (LCP).

Additional frontend measures include compressing text resources with Brotli instead of Gzip, which produces files averaging 15 to 20 percent smaller, removing unused CSS rules from the critical rendering path, offloading non-critical JavaScript modules into asynchronous chunks, and using modern image formats like WebP or AVIF with automatic format negotiation. Combined, these measures can reduce perceived load time by 40 to 60 percent.

Google's Core Web Vitals -- LCP, FID, and CLS -- are relevant for B2B stores as well, even when traffic primarily comes from direct access rather than organic search. Faster load times increase user satisfaction and thus reorder rates. A study by Deloitte shows that improving page load time by 0.1 seconds increases e-commerce conversion rates by an average of 8.4 percent (Deloitte, 2023).

Asynchronous Processing: Message Queues and Workers

Many computationally intensive operations in a B2B store do not need to occur synchronously during page loads. Product imports, price calculations, Elasticsearch index updates, and newsletter dispatch can be offloaded to message queues and processed by dedicated worker processes. Shopware natively uses the Symfony Messenger Component with support for various transport backends such as Redis, RabbitMQ, or the database.

For B2B stores with large catalogs, worker process configuration is critical. A single worker is insufficient when regularly importing 100,000+ products. Multiple parallel workers, divided by task type -- for instance one worker for product imports, another for index updates, and a third for email dispatch -- prevent time-critical tasks from waiting behind lengthy imports in the queue.

Practical Tip: Scheduled Index Updates

Schedule Elasticsearch reindexing outside of peak business hours. A full reindex of a 100,000-product catalog can take 15 to 45 minutes depending on hardware and stresses both the database and Elasticsearch cluster during that time. Incremental updates for individual product changes should be processed immediately via the message queue.

Performance Monitoring: Measure, Analyze, Optimize

Without continuous monitoring, performance issues often go unnoticed until customers complain. A comprehensive monitoring setup for B2B stores covers three levels: Real User Monitoring (RUM) measures actual user experience in the browser, Application Performance Monitoring (APM) identifies slow PHP processes and database queries on the server side, and infrastructure monitoring tracks CPU, RAM, disk I/O, and network traffic at the system level.

Defining performance budgets helps detect regressions early. A typical budget for a B2B store specifies: Time to First Byte (TTFB) under 200 milliseconds, Largest Contentful Paint (LCP) under 2.5 seconds, Cumulative Layout Shift (CLS) under 0.1, and Elasticsearch response time under 50 milliseconds for standard searches. Automated alerts warn the development team when these thresholds are exceeded.

Scaling Strategy: From Single Server to Cluster

For growing B2B stores, a single server eventually reaches its limits. The scaling strategy should be considered from the outset, even when the initial infrastructure is still manageable. Vertical scaling -- more RAM, faster CPUs, NVMe SSDs -- is the simplest first step and typically supports traffic volumes of up to 500 to 1,000 concurrent users.

Beyond that, horizontal scaling becomes necessary: multiple application servers behind a load balancer, a dedicated Elasticsearch cluster with at least three nodes for fault tolerance, a Redis cluster for session persistence across multiple application servers, and a database with primary-replica topology. Shopware is prepared for this architecture as long as session handling and file storage are externalized to services like Redis and S3-compatible object storage.

Investing in scalable infrastructure pays off especially during seasonal peak loads. B2B retailers in the construction industry, for example, experience order volumes in spring that can reach three times the annual average. An elastic infrastructure that spins up additional application servers on demand prevents revenue losses from overloaded systems.

Fast Stores as a Competitive Advantage in the B2B Market

Performance optimization for B2B stores is not a one-time project but an ongoing process. The combination of Redis caching, Elasticsearch for search and filtering, database tuning, CDN deployment, and frontend optimization forms the foundation on which large catalogs can operate performantly. What matters is a systematic approach: first measure and identify the biggest bottlenecks, then optimize targeted areas, and safeguard improvements through monitoring.

Investing in store performance delivers measurable returns: faster load times lead to higher user satisfaction, more orders, and stronger engagement of B2B customers with the digital ordering platform. In a market where many B2B stores still struggle with sluggish systems and poor usability, a fast and reliable platform becomes a genuine differentiator.

Free initial consultation

Non-binding initial consultation, individual analysis of your requirements and an honest assessment of the project scope.