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:
LiteSpeed Setup
Here’s what worked well for me:
1. Full Page Cache
2. Cache Purge Strategy
3. Object & Browser Cache
4. Compression
5. Image Optimization
Results
Challenges Faced
Questions for the Community
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?