LiteSpeed Cache (LSCache)
This project integrates LiteSpeed Cache with Drupal, adding necessary response headers for caching Drupal pages based on cache tags. It also includes a submodule to invalidate LiteSpeed Cache entries when content is updated, with options for advanced invalidation strategies and per-user caching.
Drupal.org-native integration for LiteSpeed Cache. Adds the response headers LSCache needs to cache Drupal pages keyed by Drupal cache tag, and ships a Purge-framework submodule that invalidates LSCache entries when content changes. Stable (1.3.x), security-advisory covered.
Invalidation that works on real LiteSpeed builds
Some LiteSpeed builds silently ignore tag-based PURGE: the request returns HTTP 200 but evicts nothing, so edits never clear. The purger supports a per-URL PURGE strategy (purge_strategy: auto|tag|url) that resolves each cache tag to its canonical Drupal paths and sends one PURGE per URL; auto self-selects from a probe.
drush lscache:diagprobes the connected LiteSpeed instance for URL- versus tag-PURGE effectiveness and prints a recommendation.- A self-populating tag-affinity table plus an operator-pinnable
static_url_mapresolve aggregate tags (node_list, View configs) to the listing pages that carry them.drush lscache:list-tag-coveragereports gaps.
More
- Optional per-user (private) caching that is BigPipe and drupalSettings aware, so it does not break Drupal AJAX for logged-in users.
- Vary cookies, ESI fragments for per-user chunks inside shared pages, and status-report diagnostics for the required
.htaccessdirectives, the PURGE host, and scheme or Host-header mismatches. - Requires Drupal
^10.3 || ^11under LiteSpeed Web Server, OpenLiteSpeed, or a LiteSpeed PaaS host. The Purger submodule requires Purge.
Depends on
Dependencies of the latest stable release
No dependencies recorded for this project.
Required by
Tracked projects that depend on this one
No tracked projects depend on this one yet.
Activity
Release Timeline
Releases
| Version | Type | Core | Notes | Release date | |
|---|---|---|---|---|---|
| 1.3.5 | Stable | 10–11 | Jul 6, 2026 | ||
| 1.3.4 | Stable | 10–11 | Jun 29, 2026 | ||
| 1.3.3 | Stable | 10–11 | Jun 7, 2026 | ||
| 1.3.2 | Stable | 10–11 | Jun 7, 2026 | ||
| 1.3.1 | Stable | 10–11 | Jun 7, 2026 | ||
| 1.3.0 | Stable | 10–11 | Jun 7, 2026 | ||
| 1.3.0-beta6 | Pre-release | 10–11 | May 28, 2026 | ||
| 1.3.0-beta5 | Pre-release | 10–11 | May 16, 2026 | ||
| 1.3.0-beta4 | Pre-release | 10–11 | May 15, 2026 | ||
| 1.3.0-beta3 | Pre-release | 10–11 | May 15, 2026 | ||
| 1.3.0-rc2 | Pre-release | 10–11 | May 15, 2026 | ||
| 1.3.0-rc1 | Pre-release | 10–11 | May 10, 2026 | ||
| 1.3.0-beta2 | Pre-release | 10–11 | May 10, 2026 | ||
| 1.3.0-beta1 | Pre-release | 10–11 | May 9, 2026 | ||
| 1.2.0-beta1 | Pre-release | 10–11 | May 9, 2026 | ||
| 1.3.0-alpha3 | Pre-release | 10–11 | May 9, 2026 | ||
| 1.2.0-alpha3 | Pre-release | 10–11 | May 9, 2026 | ||
| 1.3.0-alpha2 | Pre-release | 10–11 | May 9, 2026 | ||
| 1.2.0-alpha2 | Pre-release | 10–11 | May 9, 2026 | ||
| 1.1.0-alpha2 | Pre-release | 10–11 | May 9, 2026 | ||
| 1.1.0-alpha1 | Pre-release | 10–11 | May 9, 2026 | ||
| 1.0.1 | Stable | 10–11 | May 5, 2026 | ||
| 1.0.0 | Stable | 10–11 | May 5, 2026 | ||
| 1.0.0-rc1 | Pre-release | 10–11 | Apr 25, 2026 | ||
| 1.0.0-beta2 | Pre-release | 10–11 | Apr 25, 2026 | ||
| 1.0.0-beta1 | Pre-release | 10–11 | Apr 25, 2026 | ||
| 1.0.0-alpha4 | Pre-release | 10–11 | Apr 25, 2026 | ||
| 1.0.0-alpha3 | Pre-release | 10–11 | Apr 25, 2026 | ||
| 1.0.0-alpha2 | Pre-release | 10–11 | Apr 25, 2026 | ||
| 1.0.0-alpha1 | Pre-release | 10–11 | Alpha 1 Release | Apr 24, 2026 | |
| 1.0.x-dev | Dev | 10–11 | First release | Apr 24, 2026 |