Cache Enabler – WordPress Cache - Version 1.8.7

Version Description

  • Update plugin upgrade process for multisite networks (#303)
  • Update wp-config.php file handling (#302)
Download this release

Release Info

Developer keycdn
Plugin Icon 128x128 Cache Enabler – WordPress Cache
Version 1.8.7
Comparing to
See all releases

Code changes from version 1.8.6 to 1.8.7

advanced-cache.php CHANGED
@@ -4,8 +4,8 @@
4
  *
5
  * The advanced-cache.php creation method uses this during the disk setup and
6
  * requirements check. You can copy this file to the wp-content directory and edit
7
- * the $cache_enabler_constants_file value as needed. It will be deleted if stale
8
- * or abandoned.
9
  *
10
  * @since 1.2.0
11
  * @change 1.8.6
4
  *
5
  * The advanced-cache.php creation method uses this during the disk setup and
6
  * requirements check. You can copy this file to the wp-content directory and edit
7
+ * the $cache_enabler_constants_file value as needed. It will automatically delete
8
+ * itself if stale or abandoned.
9
  *
10
  * @since 1.2.0
11
  * @change 1.8.6
cache-enabler.php CHANGED
@@ -6,7 +6,7 @@ Description: Simple and fast WordPress caching plugin.
6
  Author: KeyCDN
7
  Author URI: https://www.keycdn.com
8
  License: GPLv2 or later
9
- Version: 1.8.6
10
  */
11
 
12
  /*
6
  Author: KeyCDN
7
  Author URI: https://www.keycdn.com
8
  License: GPLv2 or later
9
+ Version: 1.8.7
10
  */
11
 
12
  /*
constants.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  $cache_enabler_constants = array(
9
- 'CACHE_ENABLER_VERSION' => '1.8.6',
10
  'CACHE_ENABLER_MIN_PHP' => '5.6',
11
  'CACHE_ENABLER_MIN_WP' => '5.1',
12
  'CACHE_ENABLER_DIR' => __DIR__,
6
  */
7
 
8
  $cache_enabler_constants = array(
9
+ 'CACHE_ENABLER_VERSION' => '1.8.7',
10
  'CACHE_ENABLER_MIN_PHP' => '5.6',
11
  'CACHE_ENABLER_MIN_WP' => '5.1',
12
  'CACHE_ENABLER_DIR' => __DIR__,
inc/cache_enabler.class.php CHANGED
@@ -232,8 +232,8 @@ final class Cache_Enabler {
232
  * When the plugin is uninstalled.
233
  *
234
  * This runs on the 'uninstall_cache-enabler/cache-enabler.php' action. It deletes
235
- * the 'cache_enabler' option and 'cache_enabler_cache_size' transient from the
236
- * database for each site.
237
  *
238
  * @since 1.0.0
239
  * @change 1.6.0
@@ -313,27 +313,28 @@ final class Cache_Enabler {
313
  }
314
 
315
  /**
316
- * Update the disk and backend requirements.
317
  *
318
  * This update process begins by first deleting the settings and
319
  * advanced-cache.php files and then maybe unsets the WP_CACHE constant in the
320
  * wp-config.php file. A new advanced-cache.php file is then created and the
321
- * WP_CACHE constant is maybe set. Next, the 'cache_enabler' option is updated in
322
- * the database for each site Cache Enabler is considered active, which triggers a
323
- * new settings file to be created each time that occurs. Lastly, the complete
324
- * cache is cleared.
325
  *
326
- * @since 1.8.0
 
327
  */
328
  public static function update() {
329
 
330
  self::update_disk();
331
- self::each_site( is_multisite(), 'self::update_backend' );
332
- self::clear_complete_cache();
333
  }
334
 
335
  /**
336
- * Add or update backend requirements.
337
  *
338
  * This adds or updates the 'cache_enabler' option in the database, which triggers
339
  * the creation of the settings file. It will call self::on_update_backend() when
@@ -369,19 +370,29 @@ final class Cache_Enabler {
369
  }
370
 
371
  /**
372
- * Update the disk requirements.
373
  *
374
  * This deletes the settings and advanced-cache.php files and then maybe unsets
375
  * the WP_CACHE constant in the wp-config.php file. A new advanced-cache.php file
376
- * is then created and the WP_CACHE constant is maybe set.
 
 
377
  *
378
- * @since 1.8.0
 
379
  */
380
  public static function update_disk() {
381
 
382
- self::each_site( is_multisite(), 'Cache_Enabler_Disk::clean' );
383
-
384
- Cache_Enabler_Disk::setup();
 
 
 
 
 
 
 
385
  }
386
 
387
  /**
@@ -557,12 +568,13 @@ final class Cache_Enabler {
557
  * Uninstall backend requirements.
558
  *
559
  * @since 1.5.0
560
- * @change 1.8.0
561
  */
562
  private static function uninstall_backend() {
563
 
564
  delete_option( 'cache_enabler' );
565
  delete_transient( 'cache_enabler_cache_size' );
 
566
  }
567
 
568
  /**
@@ -707,7 +719,7 @@ final class Cache_Enabler {
707
  /**
708
  * Get the plugin settings from the database for the current site.
709
  *
710
- * This can update the disk and backend requirements and then clear the complete
711
  * cache if the settings do not exist or are outdated. If that occurs, the
712
  * settings after the update will be returned.
713
  *
232
  * When the plugin is uninstalled.
233
  *
234
  * This runs on the 'uninstall_cache-enabler/cache-enabler.php' action. It deletes
235
+ * the 'cache_enabler' option and plugin transients from the database for each
236
+ * site in the installation.
237
  *
238
  * @since 1.0.0
239
  * @change 1.6.0
313
  }
314
 
315
  /**
316
+ * Update the disk and backend requirements for the current site.
317
  *
318
  * This update process begins by first deleting the settings and
319
  * advanced-cache.php files and then maybe unsets the WP_CACHE constant in the
320
  * wp-config.php file. A new advanced-cache.php file is then created and the
321
+ * WP_CACHE constant is maybe set. If a multisite network, the preceding actions
322
+ * will only be done when the first site in the network is updated. Next, the
323
+ * 'cache_enabler' option is updated in the database for the current site, which
324
+ * triggers a new settings file to be created. Lastly, the site cache is cleared.
325
  *
326
+ * @since 1.8.0
327
+ * @change 1.8.7
328
  */
329
  public static function update() {
330
 
331
  self::update_disk();
332
+ self::update_backend();
333
+ self::clear_site_cache();
334
  }
335
 
336
  /**
337
+ * Add or update the backend requirements for the current site.
338
  *
339
  * This adds or updates the 'cache_enabler' option in the database, which triggers
340
  * the creation of the settings file. It will call self::on_update_backend() when
370
  }
371
 
372
  /**
373
+ * Update the disk requirements for the current site.
374
  *
375
  * This deletes the settings and advanced-cache.php files and then maybe unsets
376
  * the WP_CACHE constant in the wp-config.php file. A new advanced-cache.php file
377
+ * is then created and the WP_CACHE constant is maybe set. If a multisite network,
378
+ * the 'cache_enabler_disk_updated' site transient is set afterward to only allow
379
+ * this to be ran once.
380
  *
381
+ * @since 1.8.0
382
+ * @change 1.8.7
383
  */
384
  public static function update_disk() {
385
 
386
+ if ( is_multisite() ) {
387
+ if ( get_site_transient( 'cache_enabler_disk_updated' ) !== CACHE_ENABLER_VERSION ) {
388
+ self::each_site( true, 'Cache_Enabler_Disk::clean' );
389
+ Cache_Enabler_Disk::setup();
390
+ set_site_transient( 'cache_enabler_disk_updated', CACHE_ENABLER_VERSION, HOUR_IN_SECONDS );
391
+ }
392
+ } else {
393
+ Cache_Enabler_Disk::clean();
394
+ Cache_Enabler_Disk::setup();
395
+ }
396
  }
397
 
398
  /**
568
  * Uninstall backend requirements.
569
  *
570
  * @since 1.5.0
571
+ * @change 1.8.7
572
  */
573
  private static function uninstall_backend() {
574
 
575
  delete_option( 'cache_enabler' );
576
  delete_transient( 'cache_enabler_cache_size' );
577
+ delete_site_transient( 'cache_enabler_disk_updated' );
578
  }
579
 
580
  /**
719
  /**
720
  * Get the plugin settings from the database for the current site.
721
  *
722
+ * This can update the disk and backend requirements and then clear the site
723
  * cache if the settings do not exist or are outdated. If that occurs, the
724
  * settings after the update will be returned.
725
  *
inc/cache_enabler_disk.class.php CHANGED
@@ -922,6 +922,11 @@ final class Cache_Enabler_Disk {
922
  /**
923
  * Get the name of the settings file for the current site.
924
  *
 
 
 
 
 
925
  * @since 1.5.5
926
  * @change 1.8.0
927
  *
@@ -934,7 +939,6 @@ final class Cache_Enabler_Disk {
934
 
935
  $settings_file_name = '';
936
 
937
- // When creating or deleting the settings file.
938
  if ( function_exists( 'home_url' ) ) {
939
  $settings_file_name = parse_url( home_url(), PHP_URL_HOST );
940
 
@@ -944,7 +948,6 @@ final class Cache_Enabler_Disk {
944
  }
945
 
946
  $settings_file_name .= '.php';
947
- // When getting the plugin settings from the settings file.
948
  } elseif ( is_dir( CACHE_ENABLER_SETTINGS_DIR ) ) {
949
  if ( $fallback ) {
950
  $settings_files = array_map( 'basename', self::get_dir_objects( CACHE_ENABLER_SETTINGS_DIR ) );
@@ -1010,15 +1013,17 @@ final class Cache_Enabler_Disk {
1010
  *
1011
  * This will create the settings file if it does not exist and the cache engine
1012
  * was started late. If that occurs, the settings from the new settings file will
1013
- * be returned.
 
 
1014
  *
1015
- * This can update the disk and backend requirements and then clear the complete
1016
- * cache if the settings are outdated. If that occurs, a new settings file will be
1017
  * created and an empty array returned.
1018
  *
1019
  * @since 1.5.0
1020
  * @since 1.8.0 The `$update` parameter was added.
1021
- * @change 1.8.5
1022
  *
1023
  * @param bool $update Whether to update the disk and backend requirements if the settings are
1024
  * outdated. Default true.
@@ -1052,10 +1057,17 @@ final class Cache_Enabler_Disk {
1052
  Cache_Enabler::update();
1053
  }
1054
  } else {
1055
- $settings_file = self::create_settings_file( Cache_Enabler::get_settings() );
 
1056
 
1057
- if ( $settings_file !== false ) {
1058
  $settings = include $settings_file;
 
 
 
 
 
 
1059
  }
1060
  }
1061
  }
@@ -1343,10 +1355,17 @@ final class Cache_Enabler_Disk {
1343
  /**
1344
  * Set or unset the WP_CACHE constant in the wp-config.php file.
1345
  *
 
 
 
 
 
1346
  * @since 1.5.0
1347
- * @change 1.7.0
 
1348
  *
1349
- * @param bool $set (Optional) True to set the WP_CACHE constant, false to unset. Default true.
 
1350
  */
1351
  private static function set_wp_cache_constant( $set = true ) {
1352
 
@@ -1357,36 +1376,57 @@ final class Cache_Enabler_Disk {
1357
  // The config file resides one level above ABSPATH but is not part of another installation.
1358
  $wp_config_file = dirname( ABSPATH ) . '/wp-config.php';
1359
  } else {
1360
- $wp_config_file = false;
 
1361
  }
1362
 
1363
- if ( ! $wp_config_file || ! is_writable( $wp_config_file ) ) {
1364
- return;
1365
  }
1366
 
1367
  $wp_config_file_contents = file_get_contents( $wp_config_file );
1368
 
1369
  if ( ! is_string( $wp_config_file_contents ) ) {
1370
- return;
1371
  }
1372
 
1373
- $found_wp_cache_constant = preg_match( '/define\s*\(\s*[\'\"]WP_CACHE[\'\"]\s*,.+\);/', $wp_config_file_contents );
 
1374
 
1375
- if ( $set && ! $found_wp_cache_constant ) {
1376
- $ce_wp_config_lines = '/** Enables page caching for Cache Enabler. */' . PHP_EOL;
1377
- $ce_wp_config_lines .= "if ( ! defined( 'WP_CACHE' ) ) {" . PHP_EOL;
1378
- $ce_wp_config_lines .= "\tdefine( 'WP_CACHE', true );" . PHP_EOL;
1379
- $ce_wp_config_lines .= '}' . PHP_EOL;
1380
- $ce_wp_config_lines .= PHP_EOL;
1381
- $wp_config_file_contents = preg_replace( '/(\/\*\* Sets up WordPress vars and included files\. \*\/)/', $ce_wp_config_lines . '$1', $wp_config_file_contents );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1382
  }
1383
 
1384
- if ( ! $set ) {
1385
- $wp_config_file_contents = preg_replace( '/.+Added by Cache Enabler\r\n/', '', $wp_config_file_contents ); // < 1.5.0
1386
- $wp_config_file_contents = preg_replace( '/\/\*\* Enables page caching for Cache Enabler\. \*\/' . PHP_EOL . '.+' . PHP_EOL . '.+' . PHP_EOL . '\}' . PHP_EOL . PHP_EOL . '/', '', $wp_config_file_contents );
1387
  }
1388
 
1389
- file_put_contents( $wp_config_file, $wp_config_file_contents, LOCK_EX );
 
 
1390
  }
1391
 
1392
  /**
922
  /**
923
  * Get the name of the settings file for the current site.
924
  *
925
+ * This uses home_url() in the late cache engine start to get the settings file
926
+ * name when creating and deleting the settings file or when getting the plugin
927
+ * settings from the settings file. Otherwise, it finds the name of the settings
928
+ * file in the settings directory when the cache engine is started early.
929
+ *
930
  * @since 1.5.5
931
  * @change 1.8.0
932
  *
939
 
940
  $settings_file_name = '';
941
 
 
942
  if ( function_exists( 'home_url' ) ) {
943
  $settings_file_name = parse_url( home_url(), PHP_URL_HOST );
944
 
948
  }
949
 
950
  $settings_file_name .= '.php';
 
951
  } elseif ( is_dir( CACHE_ENABLER_SETTINGS_DIR ) ) {
952
  if ( $fallback ) {
953
  $settings_files = array_map( 'basename', self::get_dir_objects( CACHE_ENABLER_SETTINGS_DIR ) );
1013
  *
1014
  * This will create the settings file if it does not exist and the cache engine
1015
  * was started late. If that occurs, the settings from the new settings file will
1016
+ * be returned. Before it is created, checking if the settings file exists after
1017
+ * retrieving the database settings is done in case an update occurred, which
1018
+ * would have resulted in a new settings file being created.
1019
  *
1020
+ * This can update the disk and backend requirements and then clear the site cache
1021
+ * if the settings are outdated. If that occurs, a new settings file will be
1022
  * created and an empty array returned.
1023
  *
1024
  * @since 1.5.0
1025
  * @since 1.8.0 The `$update` parameter was added.
1026
+ * @change 1.8.7
1027
  *
1028
  * @param bool $update Whether to update the disk and backend requirements if the settings are
1029
  * outdated. Default true.
1057
  Cache_Enabler::update();
1058
  }
1059
  } else {
1060
+ $_settings = Cache_Enabler::get_settings();
1061
+ $settings_file = self::get_settings_file();
1062
 
1063
+ if ( is_file( $settings_file ) ) {
1064
  $settings = include $settings_file;
1065
+ } else {
1066
+ $settings_file = self::create_settings_file( $_settings );
1067
+
1068
+ if ( $settings_file !== false ) {
1069
+ $settings = include $settings_file;
1070
+ }
1071
  }
1072
  }
1073
  }
1355
  /**
1356
  * Set or unset the WP_CACHE constant in the wp-config.php file.
1357
  *
1358
+ * This has some functionality copied from wp-load.php when trying to find the
1359
+ * wp-config.php file. It will only set the WP_CACHE constant if the wp-config.php
1360
+ * file is considered to be default and it is not already set. It will only unset
1361
+ * the WP_CACHE constant if previously set by the plugin.
1362
+ *
1363
  * @since 1.5.0
1364
+ * @since 1.8.7 The return value was updated.
1365
+ * @change 1.8.7
1366
  *
1367
+ * @param bool $set (Optional) True to set the WP_CACHE constant, false to unset. Default true.
1368
+ * @return string|bool Path to the updated wp-config.php file, false otherwise.
1369
  */
1370
  private static function set_wp_cache_constant( $set = true ) {
1371
 
1376
  // The config file resides one level above ABSPATH but is not part of another installation.
1377
  $wp_config_file = dirname( ABSPATH ) . '/wp-config.php';
1378
  } else {
1379
+ // The config file could not be found.
1380
+ return false;
1381
  }
1382
 
1383
+ if ( ! is_writable( $wp_config_file ) ) {
1384
+ return false;
1385
  }
1386
 
1387
  $wp_config_file_contents = file_get_contents( $wp_config_file );
1388
 
1389
  if ( ! is_string( $wp_config_file_contents ) ) {
1390
+ return false;
1391
  }
1392
 
1393
+ if ( $set ) {
1394
+ $default_wp_config_file = ( strpos( $wp_config_file_contents, '/** Sets up WordPress vars and included files. */' ) !== false );
1395
 
1396
+ if ( ! $default_wp_config_file ) {
1397
+ return false;
1398
+ }
1399
+
1400
+ $found_wp_cache_constant = preg_match( '#define\s*\(\s*[\'\"]WP_CACHE[\'\"]\s*,.+\);#', $wp_config_file_contents );
1401
+
1402
+ if ( $found_wp_cache_constant ) {
1403
+ return false;
1404
+ }
1405
+
1406
+ $new_wp_config_lines = '/** Enables page caching for Cache Enabler. */' . PHP_EOL;
1407
+ $new_wp_config_lines .= "if ( ! defined( 'WP_CACHE' ) ) {" . PHP_EOL;
1408
+ $new_wp_config_lines .= "\tdefine( 'WP_CACHE', true );" . PHP_EOL;
1409
+ $new_wp_config_lines .= '}' . PHP_EOL;
1410
+ $new_wp_config_lines .= PHP_EOL;
1411
+
1412
+ $new_wp_config_file_contents = preg_replace( '#(/\*\* Sets up WordPress vars and included files\. \*/)#', $new_wp_config_lines . '$1', $wp_config_file_contents );
1413
+ } else { // Unset.
1414
+ if ( strpos( $wp_config_file_contents, '/** Enables page caching for Cache Enabler. */' ) !== false ) {
1415
+ $new_wp_config_file_contents = preg_replace( '#/\*\* Enables page caching for Cache Enabler\. \*/' . PHP_EOL . '.+' . PHP_EOL . '.+' . PHP_EOL . '\}' . PHP_EOL . PHP_EOL . '#', '', $wp_config_file_contents );
1416
+ } elseif ( strpos( $wp_config_file_contents, '// Added by Cache Enabler' ) !== false ) { // < 1.5.0
1417
+ $new_wp_config_file_contents = preg_replace( '#.+Added by Cache Enabler\r\n#', '', $wp_config_file_contents );
1418
+ } else {
1419
+ return false; // Not previously set by the plugin.
1420
+ }
1421
  }
1422
 
1423
+ if ( ! is_string( $new_wp_config_file_contents ) || empty( $new_wp_config_file_contents ) ) {
1424
+ return false;
 
1425
  }
1426
 
1427
+ $wp_config_file_updated = file_put_contents( $wp_config_file, $new_wp_config_file_contents, LOCK_EX );
1428
+
1429
+ return ( $wp_config_file_updated === false ) ? false : $wp_config_file;
1430
  }
1431
 
1432
  /**
inc/cache_enabler_engine.class.php CHANGED
@@ -32,6 +32,9 @@ final class Cache_Enabler_Engine {
32
  /**
33
  * Whether the cache engine is started.
34
  *
 
 
 
35
  * @since 1.5.0
36
  *
37
  * @var bool
32
  /**
33
  * Whether the cache engine is started.
34
  *
35
+ * The cache engine is considered to have been started early when started in the
36
+ * advanced-cache.php drop-in file and started late when started on the 'init' action.
37
+ *
38
  * @since 1.5.0
39
  *
40
  * @var bool
readme.txt CHANGED
@@ -55,12 +55,16 @@ Cache Enabler captures page contents and saves it as a static HTML file on the s
55
 
56
  == Changelog ==
57
 
 
 
 
 
58
  = 1.8.6 =
59
- * Add `cache_enabler_settings_before_validation` filter hook (#298)
60
- * Add additional validation when creating cached files (#299)
61
- * Add type casts to several filter hooks (#299)
62
  * Update requirements check notices (#300)
63
  * Update `advanced-cache.php` drop-in file handling (#297)
 
 
 
64
 
65
  = 1.8.5 =
66
  * Update required WordPress version from 5.5 to 5.1 (#295)
@@ -79,29 +83,29 @@ Cache Enabler captures page contents and saves it as a static HTML file on the s
79
  * Fix requirements check (#285)
80
 
81
  = 1.8.0 =
82
- * Update `advanced-cache.php` drop-in file handling to improve reliability and compatibility (#283 and #260)
83
  * Update settings file to be deleted before the `home` option is updated to prevent a leftover settings file (#279)
84
  * Update `cache_enabler_bypass_cache` filter hook default value to allow a complete override (#277)
85
- * Update cache size transient to be in real time (#269 and #237)
86
  * Update cache expiry time to always be a non-negative integer (#265)
87
  * Update WP-CLI `clear` subcommand (#261)
88
  * Update required WordPress version from 5.1 to 5.5 (#260)
89
  * Update plugin upgrade process to improve reliability and compatibility (#260)
90
  * Update getting the cache file path to improve creating cache files (#256)
91
  * Update HTML5 doctype check to be less strict (#254)
92
- * Update permalink structure handling (#263 and #251)
93
- * Update requirements check to improve notices shown (#260 and #249)
94
  * Update cache clearing structure to enhance the automatic cache clearing actions (#247)
95
- * Add WP-Cron event to clear the expired cache on an hourly basis (#281, #268, and #237)
96
- * Add new cache clearing structure for option actions (#280 and #272)
97
- * Add cache engine restart support (#278 and #271)
98
  * Add `constants.php` file to plugin directory to allow constant overrides (#260)
99
  * Add wildcard cache clearing support (#246)
100
  * Add Brotli compression support (#243 @nlemoine)
101
  * Add new cache clearing structure for term actions (#234 @davelit)
102
  * Add cache iterator to improve cache object handling (#237)
103
  * Fix WebP URL conversion edge case (#275)
104
- * Deprecate `cache_enabler_clear_site_cache_by_blog_id` and `cache_enabler_clear_page_cache_by_post_id` action hooks in favor of replacements (#274 and #247)
105
 
106
  = 1.7.2 =
107
  * Update string to be translatable (#235 @timse201)
55
 
56
  == Changelog ==
57
 
58
+ = 1.8.7 =
59
+ * Update plugin upgrade process for multisite networks (#303)
60
+ * Update `wp-config.php` file handling (#302)
61
+
62
  = 1.8.6 =
 
 
 
63
  * Update requirements check notices (#300)
64
  * Update `advanced-cache.php` drop-in file handling (#297)
65
+ * Add additional validation when creating cached files (#299)
66
+ * Add type casts to several filter hooks (#299)
67
+ * Add `cache_enabler_settings_before_validation` filter hook (#298)
68
 
69
  = 1.8.5 =
70
  * Update required WordPress version from 5.5 to 5.1 (#295)
83
  * Fix requirements check (#285)
84
 
85
  = 1.8.0 =
86
+ * Update `advanced-cache.php` drop-in file handling to improve reliability and compatibility (#260 and #283)
87
  * Update settings file to be deleted before the `home` option is updated to prevent a leftover settings file (#279)
88
  * Update `cache_enabler_bypass_cache` filter hook default value to allow a complete override (#277)
89
+ * Update cache size transient to be in real time (#237 and #269)
90
  * Update cache expiry time to always be a non-negative integer (#265)
91
  * Update WP-CLI `clear` subcommand (#261)
92
  * Update required WordPress version from 5.1 to 5.5 (#260)
93
  * Update plugin upgrade process to improve reliability and compatibility (#260)
94
  * Update getting the cache file path to improve creating cache files (#256)
95
  * Update HTML5 doctype check to be less strict (#254)
96
+ * Update permalink structure handling (#251 and #263)
97
+ * Update requirements check to improve notices shown (#249 and #260)
98
  * Update cache clearing structure to enhance the automatic cache clearing actions (#247)
99
+ * Add WP-Cron event to clear the expired cache on an hourly basis (#237, #268, and #281)
100
+ * Add new cache clearing structure for option actions (#272 and #280)
101
+ * Add cache engine restart support (#271 and #278)
102
  * Add `constants.php` file to plugin directory to allow constant overrides (#260)
103
  * Add wildcard cache clearing support (#246)
104
  * Add Brotli compression support (#243 @nlemoine)
105
  * Add new cache clearing structure for term actions (#234 @davelit)
106
  * Add cache iterator to improve cache object handling (#237)
107
  * Fix WebP URL conversion edge case (#275)
108
+ * Deprecate `cache_enabler_clear_site_cache_by_blog_id` and `cache_enabler_clear_page_cache_by_post_id` action hooks in favor of replacements (#247 and #274)
109
 
110
  = 1.7.2 =
111
  * Update string to be translatable (#235 @timse201)