Install

Works with Drupal: ^10.3 || ^11 || ^12

Using Composer to manage Drupal site dependencies

Alternative installation files

Download tar.gz 214.39 KB
MD5: f6dd17f5b5191437fc6f5e29980d4eee
SHA-1: 2e899dba37045476aa71cca28840898df9b34fe2
SHA-256: 24a3b8ba80ae243a7b6f33b87bd1713140b5291ff8900e3584fa81d65f3ab7b7
Download zip 466.08 KB
MD5: cf29fd59a3ed690ef179931d79b1a6e4
SHA-1: 73f7b0030bd0ab973f9949478e232c5e2eba6009
SHA-256: 4f7e5b8f6dabf39c5296464d3b40a972ec3a7cf253b0b2bea9ad4e8936d1fbfb

Release notes

Purge 8.x-3.8 adds Drupal 12 support, a new Path alias queuer submodule, and a number of fixes to diagnostics, the queue and the coretags queuer.

Upgrade notes

  • Core requirement: Purge now requires Drupal ^10.3 || ^11 || ^12. Sites on Drupal 9.5 or Drupal 10.0–10.2 must stay on 8.x-3.7.
  • Run database updates (drush updb). They move the queue statistics from state to key-value storage and rebuild the container for the new service aliases.
  • Diagnostic checks bound to a purger now block only that purger instead of all purging. Global checks still block everything.
  • Cache tags containing whitespace are now rejected. The coretags queuer and the queue skip and log them; creating a tag invalidation with whitespace directly throws InvalidExpressionException.

New features

  • New Path alias queuer submodule: queues URL invalidations when path aliases are created, changed or deleted.
  • Invalidate a purger's cache from the Purge UI, and a Purge link in the admin menu.
  • drush sql:sanitize empties the purge queue, and p:queue-work has a --oneline option.
  • Purge services are aliased by their interfaces for autowiring, and DatabaseQueue can be extended with non-integer IDs.
  • Purge's own plugins use PHP attributes. Annotation-based plugins in other modules keep working.

Deprecations (for developers)

  • Passing the state service to StatsTracker::__construct(), the StatsTracker::$state property, and subclasses that do not call the parent constructor are deprecated in 8.x-3.8 and removed in 4.0.0. See #3635585.
  • Calling PurgeBlockForm::__construct() without the $module_handler argument is deprecated in 8.x-3.8 and required in 4.0.0. See #3523147.

Contributors (16)

acbramley, ajits, darthsteven, dpi, ericgsmith, guillaumeg, japerry, kimpepper, kyberman, leslieg, lucaspretti, malcomio, mlncn, mstrelan, plach, rp7

Changelog

Issues: 25 issues resolved.

Changes since 8.x-3.7 (compare):

Bug

  • #3612380 by japerry: DependencySerializationTrait does not support private properties
  • #3264141 by japerry: Don't run the LateRunTimeProcessor when performing a config import.
  • #3436188 by rp7: Document that coretags blacklist entries are substring matches
  • #3533998 by darthsteven, japerry: Reject cache tags that contain whitespace
  • #3273264 by japerry: Empty the purge queue during drush sql:sanitize
  • #3626509 by lucaspretti: Call to a member function getLabel() on null after a config import uninstalls a purger module

Feature

  • #3208832 by japerry: Add a Path Alias Queuer that allows sites to purge URLs when content is created/edited/deleted.
  • #3263285 by acbramley, japerry: Add support for oneline format output for queue command
  • #3418683 by japerry, malcomio: Include link to purge config page in admin menu
  • #3459162 by japerry, mstrelan: Loosen the requirements check for TTL below one month
  • #2853613 by japerry: Invalidate a purger's cache from UI
  • #3062616 by japerry: Only block the purgers a failing diagnostic check is bound to
  • #3523147 by guillaumeg, japerry: Allow adding extra expressions to the Purge UI block

Task

  • #3556305 by japerry, kimpepper: Convert plugin annotations to PHP 8 attributes
  • #3139376 by japerry: Replace assertions involving isObject
  • #3474929 by leslieg: Add project browser logo for Purge.
  • #3590026 by japerry: Drupal 12 Compatibility.
  • #3591945 by japerry, mlncn: Make minor updates and fixes to the README
  • #3479366 by japerry: Improve the doc and help of p:invalidate
  • #3447548 by dpi, japerry: Alias purge services by their interfaces for autowiring
  • #3475680 by ericgsmith, japerry: Allow DatabaseQueue to be extended with non-integer IDs
  • #3482222 by ajits, japerry: Do not purge on a non-live workspace
  • #3635585 by japerry, plach: Store the queue statistics in key-value storage instead of state
  • #3635585 by japerry, plach: follow-up: Add return types to StatsTrackerState::get() and getMultiple()

Support

  • #3038778 by japerry: Remove the non-existent ajaxui processor from the README
  • #3132514 by kyberman: Document and test the purge.dangerous override for the 100k queue limit

Misc

  • Replace assertions involving calls to is_array() with assertIsArray()/assertIsNotArray()
  • Linting the LateRuntimeProcessorTest
  • Update composer.json to standardize authors section.
  • Fix the next minor and next major test jobs
Created by: japerry
Created on: 11 Nov 2026 at 02:45 UTC
Last updated: 11 Nov 2026 at 02:45 UTC
Bug fixes
New features

Other releases