Use Case: Optimizing a Daily Word Game (Letter Boxed) Site with LiteSpeed Cache

#1
Hi everyone,

I wanted to share a small but interesting use case of running a daily word puzzle site (similar to Letter Boxed) on LiteSpeed and how I optimized it for performance and consistency.
Project Overview

The site publishes a new puzzle daily, with:

  • Mostly static content (letters + UI)
  • Some dynamic elements (user interactions, hints, tracking attempts)
  • Traffic spikes during specific hours (morning & evening)

LiteSpeed Setup

Here’s what worked well for me:

1. Full Page Cache

  • Enabled LSCache for anonymous users
  • Set moderate TTL (since content updates daily)

2. Cache Purge Strategy

  • Automatic purge scheduled when a new puzzle is published
  • Ensures users always see the latest puzzle without manual clearing

3. Object & Browser Cache

  • Reduced repeat requests for returning users
  • Helpful for frequent daily players

4. Compression

  • Enabled Brotli + GZIP (tested different levels for best balance)

5. Image Optimization

  • Used WebP for puzzle UI assets
  • Reduced initial load time significantly

Results

  • Faster initial page load during traffic spikes
  • Reduced server load compared to previous Apache setup
  • Consistent performance even with repeated visits

Challenges Faced

  • Aggressive CSS/JS minification broke some UI interactions (had to exclude specific files)
  • Cache conflicts when testing dynamic hints (solved using vary rules / exclusions)
  • Needed fine-tuning of TTL to match daily content updates

Questions for the Community

  • What’s the best approach for handling semi-dynamic content like hints or user progress?
  • Has anyone implemented separate cache versions for different user states (guest vs returning)?
  • Any recommendations for further optimizing small but high-frequency traffic apps like this?
 
Top