Quick answer: WooCommerce needs more than a brochure site: 4 GB+ RAM and NVMe storage, a Redis object cache, page caching with cart/checkout/account pages excluded, real system cron instead of WP-cron, and HTTPS everywhere. Get those five right and a modest VPS runs a serious store.
Overview
A store is a logged-in, write-heavy application: carts mutate sessions, checkouts write orders, stock updates invalidate caches. That’s why generic “make WordPress fast” advice (cache everything) breaks WooCommerce when applied blindly — dynamic pages must stay dynamic while everything else stays cached.
Before you start
- A plan sized for commerce: see choosing a VPS — NVMe VPS or Power VPS recommended.
- The stack tuned: PHP-FPM and MariaDB guides applied.
- SSL working (guide) — non-negotiable for checkout.
Step-by-step guide
- Cache with exclusions: enable page caching but exclude
/cart,/checkout,/my-accountand anything with thewoocommerce_cart_hash/session cookies — LiteSpeed Cache and major plugins ship WooCommerce presets; verify by adding a product to the cart from two browsers. - Object cache: Redis — product lookups, sessions and options hammer the DB on every dynamic request.
- Real cron: WP-cron fires on page views — terrible for stores (missed scheduled sales, stuck webhooks at night). Disable and schedule:
# wp-config.php define('DISABLE_WP_CRON', true); # system crontab (every minute) * * * * * sudo -u www-data wp cron event run --due-now --path=/var/www/shop.example.com >/dev/null 2>&1 - Sessions & scaling note: WooCommerce stores sessions in the database by default — fine on one VPS; just keep MariaDB healthy and watch the
wp_woocommerce_sessionstable size. - Transactional email: order mail must arrive — use SMTP to a mail service rather than PHP mail() from the VPS.
- Load-test before campaigns: simulate checkout bursts on staging; watch FPM saturation and slow queries, then size up if needed.
Common issues
- Customers see each other’s carts: cart pages got cached — fix exclusions immediately.
- Checkout slow while browsing is fast: uncached by design — that’s where Redis + PHP/DB tuning show up.
- Stock/emails lag overnight: WP-cron with no visitors — the system-cron setup above fixes it.
When to contact support
Planning a launch or migration of an existing store? Open a ticket — the team can advise on sizing, and free migration covers WooCommerce sites including order data (see also migrating multiple sites).
Frequently asked questions
How big a VPS does a WooCommerce store need?
Start at 4 vCPU / 8 GB RAM on NVMe for a store with steady traffic; carts and checkout bypass page caching, so CPU, RAM and disk latency matter far more than for a content site.
Why must cart and checkout pages be excluded from caching?
They are personal and change per visitor — serving a cached copy shows one customer another's cart or breaks checkout. Cache plugins with WooCommerce presets exclude them automatically.
Why replace WP-cron with system cron on a store?
WP-cron only runs when someone visits; at quiet hours scheduled sales, stock syncs and follow-up emails silently wait. A real cron entry runs them every minute regardless of traffic.
Related articles
- How to choose a VPS for WordPress
- How to configure Redis object cache
- How to improve WordPress speed on a VPS
- WordPress performance checklist
Ready to get started? Order a WordPress VPS at Cloud2Y →
