LiteSpeed Cache - Version 2.5.1

Version Description

  • Sep 11 2018 =
  • Responsive placeholder. (@szmigieldesign)
  • Changed CSS::ccss_realpath function scope to private.
  • BUGFIX Detected JS filetype before optimizing to avoid PHP source conflict. (@closte #50)
Download this release

Release Info

Developer LiteSpeedTech
Plugin Icon 128x128 LiteSpeed Cache
Version 2.5.1
Comparing to
See all releases

Code changes from version 2.4.4 to 2.5.1

admin/litespeed-cache-admin-settings.class.php CHANGED
@@ -684,6 +684,8 @@ class LiteSpeed_Cache_Admin_Settings
684
  {
685
  $ids = array(
686
  LiteSpeed_Cache_Config::OPID_MEDIA_IMG_LAZY,
 
 
687
  LiteSpeed_Cache_Config::OPID_MEDIA_IFRAME_LAZY,
688
  LiteSpeed_Cache_Config::OPID_MEDIA_IMG_LAZYJS_INLINE,
689
  LiteSpeed_Cache_Config::OPT_MEDIA_OPTM_AUTO,
@@ -699,8 +701,13 @@ class LiteSpeed_Cache_Admin_Settings
699
  $this->_options[ $id ] = self::parse_onoff( $this->_input, $id ) ;
700
  }
701
 
702
- $id = LiteSpeed_Cache_Config::OPID_MEDIA_IMG_LAZY_PLACEHOLDER ;
703
- $this->_options[ $id ] = $this->_input[ $id ] ;
 
 
 
 
 
704
 
705
  // Update lazyload image excludes
706
  $id = LiteSpeed_Cache_Config::ITEM_MEDIA_LAZY_IMG_EXC ;
684
  {
685
  $ids = array(
686
  LiteSpeed_Cache_Config::OPID_MEDIA_IMG_LAZY,
687
+ LiteSpeed_Cache_Config::OPID_MEDIA_PLACEHOLDER_RESP,
688
+ LiteSpeed_Cache_Config::OPID_MEDIA_PLACEHOLDER_RESP_ASYNC,
689
  LiteSpeed_Cache_Config::OPID_MEDIA_IFRAME_LAZY,
690
  LiteSpeed_Cache_Config::OPID_MEDIA_IMG_LAZYJS_INLINE,
691
  LiteSpeed_Cache_Config::OPT_MEDIA_OPTM_AUTO,
701
  $this->_options[ $id ] = self::parse_onoff( $this->_input, $id ) ;
702
  }
703
 
704
+ $ids = array(
705
+ LiteSpeed_Cache_Config::OPID_MEDIA_IMG_LAZY_PLACEHOLDER,
706
+ LiteSpeed_Cache_Config::OPID_MEDIA_PLACEHOLDER_RESP_COLOR,
707
+ ) ;
708
+ foreach ( $ids as $id ) {
709
+ $this->_options[ $id ] = $this->_input[ $id ] ;
710
+ }
711
 
712
  // Update lazyload image excludes
713
  $id = LiteSpeed_Cache_Config::ITEM_MEDIA_LAZY_IMG_EXC ;
admin/tpl/inc/check_cache_disabled.php CHANGED
@@ -1,18 +1,25 @@
1
- <?php
2
  if ( ! defined( 'WPINC' ) ) die ;
3
 
4
  $reasons = array() ;
5
 
6
  if ( ! defined( 'LITESPEED_ALLOWED' ) ) {
7
- $reasons[] = array(
8
- 'title' => __( 'The LSCache Module is disabled at the server level.', 'litespeed-cache' ),
9
- 'link' => 'https://www.litespeedtech.com/support/wiki/doku.php/litespeed_wiki:cache:lscwp:installation',
10
- ) ;
 
 
 
 
 
 
 
11
  }
12
 
13
  if ( ! defined( 'LITESPEED_ON_IN_SETTING' ) ) {
14
  $reasons[] = array(
15
- 'title' => __( 'LiteSpeed Cache is disabled in the plugin settings.', 'litespeed-cache' ) ,
16
  'link' => 'https://www.litespeedtech.com/support/wiki/doku.php/litespeed_wiki:cache:lscwp:configuration:general#enable_litespeed_cache',
17
  ) ;
18
  }
@@ -39,7 +46,7 @@ if ( $reasons ) :
39
  <li>
40
  <?php echo $v[ 'title' ] ; ?>
41
 
42
- <a href="<?php echo $v[ 'link' ] ; ?>" target="_blank" class="litespeed-learn-more"><?php echo __( 'Learn How to Fix It', 'litespeed-cache' ) ; ?></a>
43
  </li>
44
  <?php endforeach ; ?>
45
  </ul>
1
+ <?php
2
  if ( ! defined( 'WPINC' ) ) die ;
3
 
4
  $reasons = array() ;
5
 
6
  if ( ! defined( 'LITESPEED_ALLOWED' ) ) {
7
+ if ( defined( 'LITESPEED_SERVER_TYPE' ) && 'LITESPEED_SERVER_TYPE' == 'NONE') {
8
+ $reasons[] = array(
9
+ 'title' => __( 'Caching with a non-LiteSpeed server (i.e. Apache or nginx) is not currently supported.', 'litespeed-cache' ),
10
+ 'link' => 'https://www.litespeedtech.com/support/wiki/doku.php/litespeed_wiki:cache:lscwp#requirements',
11
+ ) ;
12
+ } else {
13
+ $reasons[] = array(
14
+ 'title' => __( 'Please enable the LSCache Module at the server level, or ask your hosting provider.', 'litespeed-cache' ),
15
+ 'link' => 'https://www.litespeedtech.com/support/wiki/doku.php/litespeed_wiki:cache:lscwp:installation',
16
+ ) ;
17
+ }
18
  }
19
 
20
  if ( ! defined( 'LITESPEED_ON_IN_SETTING' ) ) {
21
  $reasons[] = array(
22
+ 'title' => __( 'Please enable LiteSpeed Cache in the plugin settings.', 'litespeed-cache' ) ,
23
  'link' => 'https://www.litespeedtech.com/support/wiki/doku.php/litespeed_wiki:cache:lscwp:configuration:general#enable_litespeed_cache',
24
  ) ;
25
  }
46
  <li>
47
  <?php echo $v[ 'title' ] ; ?>
48
 
49
+ <a href="<?php echo $v[ 'link' ] ; ?>" target="_blank" class="litespeed-learn-more"><?php echo __( 'Learn More', 'litespeed-cache' ) ; ?></a>
50
  </li>
51
  <?php endforeach ; ?>
52
  </ul>
admin/tpl/manage/manage_purge.php CHANGED
@@ -76,6 +76,15 @@ if ( LiteSpeed_Cache_CSS::has_ccss_cache() ) {
76
  ) ;
77
  }
78
 
 
 
 
 
 
 
 
 
 
79
 
80
  $_panels[] = array(
81
  'title' => __( 'Purge All', 'litespeed-cache' ),
76
  ) ;
77
  }
78
 
79
+ if ( LiteSpeed_Cache_Media::has_placehoder_cache() ) {
80
+ $_panels[] = array(
81
+ 'title' => __( 'Purge All', 'litespeed-cache' ) . ' - ' . __( 'Placeholder Cache', 'litespeed-cache' ),
82
+ 'desc' => __( 'This will delete all generated image placeholder files', 'litespeed-cache' ),
83
+ 'icon' => 'purge-cssjs',
84
+ 'append_url' => LiteSpeed_Cache_Purge::TYPE_PURGE_ALL_PLACEHOLDER,
85
+ ) ;
86
+ }
87
+
88
 
89
  $_panels[] = array(
90
  'title' => __( 'Purge All', 'litespeed-cache' ),
admin/tpl/setting/settings_compatibilities.php CHANGED
@@ -27,7 +27,7 @@ if (!LiteSpeed_Cache_Admin_Display::get_instance()->show_compatibility_tab()) re
27
  cache:!1,
28
  success:function(data) {
29
  if(data) {
30
- jQuery(\'#postviews_lscwp\').html(data+\' views\');
31
  }
32
  }
33
  });</pre>
27
  cache:!1,
28
  success:function(data) {
29
  if(data) {
30
+ jQuery('#postviews_lscwp').html(data+' views');
31
  }
32
  }
33
  });</pre>
admin/tpl/setting/settings_media.php CHANGED
@@ -1,6 +1,8 @@
1
  <?php
2
  if ( ! defined( 'WPINC' ) ) die ;
3
 
 
 
4
  ?>
5
 
6
  <h3 class="litespeed-title-short">
@@ -54,6 +56,67 @@ if ( ! defined( 'WPINC' ) ) die ;
54
  </td>
55
  </tr>
56
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
  <tr>
58
  <th><?php echo __( 'Lazy Load Iframes', 'litespeed-cache' ) ; ?></th>
59
  <td>
1
  <?php
2
  if ( ! defined( 'WPINC' ) ) die ;
3
 
4
+ $last_responsive_placeholder_generated = LiteSpeed_Cache_Media::get_summary() ;
5
+
6
  ?>
7
 
8
  <h3 class="litespeed-title-short">
56
  </td>
57
  </tr>
58
 
59
+ <tr>
60
+ <th class="litespeed-padding-left"><?php echo __( 'Responsive Placeholder', 'litespeed-cache' ) ; ?></th>
61
+ <td>
62
+ <?php $this->build_switch( LiteSpeed_Cache_Config::OPID_MEDIA_PLACEHOLDER_RESP ) ; ?>
63
+ <div class="litespeed-desc">
64
+ <?php echo __( 'Responsive image placeholders can help to reduce layout reshuffle when images are loaded.', 'litespeed-cache' ) ; ?>
65
+ <?php echo __( 'This will generate the placeholder with same dimensions as the image if it has the width and height attributes.', 'litespeed-cache' ) ; ?>
66
+ </div>
67
+ </td>
68
+ </tr>
69
+
70
+ <tr>
71
+ <th class="litespeed-padding-left"><?php echo __( 'Responsive Placeholder Background Color', 'litespeed-cache' ) ; ?></th>
72
+ <td>
73
+ <?php $id = LiteSpeed_Cache_Config::OPID_MEDIA_PLACEHOLDER_RESP_COLOR ; ?>
74
+ <?php $this->build_input( $id, false, null, null, '', 'color' ) ; ?>
75
+ <div class="litespeed-desc">
76
+ <?php echo __( 'Specify the placeholder color you want to use.', 'litespeed-cache' ) ; ?>
77
+ <?php $this->recommended( $id ) ; ?>
78
+ </div>
79
+ </td>
80
+ </tr>
81
+
82
+ <tr>
83
+ <th class="litespeed-padding-left"><?php echo __( 'Generate Reponsive Placeholder In Background', 'litespeed-cache' ) ; ?></th>
84
+ <td>
85
+ <?php $this->build_switch( LiteSpeed_Cache_Config::OPID_MEDIA_PLACEHOLDER_RESP_ASYNC ) ; ?>
86
+ <div class="litespeed-desc">
87
+ <?php echo sprintf( __( 'Automatically generate %s in the background via a cron-based queue.', 'litespeed-cache' ), __( 'Responsive Placeholder', 'litespeed-cache' ) ) ; ?>
88
+ <?php echo sprintf(
89
+ __( 'If set to %1$s, before the placeholder is localized, the %2$s configuration will be used.', 'litespeed-cache' ),
90
+ '<code>' . __('ON', 'litespeed-cache') . '</code>',
91
+ __( 'Lazy Load Image Placeholder', 'litespeed-cache' )
92
+ ) ; ?>
93
+ <?php echo sprintf( __( 'If set to %s this is done in the foreground, which may slow down page load.', 'litespeed-cache' ), '<code>' . __('OFF', 'litespeed-cache') . '</code>' ) ; ?>
94
+ <a href="https://www.litespeedtech.com/support/wiki/doku.php/litespeed_wiki:cache:lscwp:configuration:media#generate_responsive_placeholder" target="_blank"><?php echo __( 'Learn More', 'litespeed-cache' ) ; ?></a>
95
+ </div>
96
+
97
+ <?php if ( $last_responsive_placeholder_generated ) : ?>
98
+ <div class="litespeed-desc litespeed-left20">
99
+ <?php if ( ! empty( $last_responsive_placeholder_generated[ 'last_request' ] ) ) : ?>
100
+ <p>
101
+ <?php echo __( 'Last generated', 'litespeed-cache' ) . ': <code>' . LiteSpeed_Cache_Utility::readable_time( $last_responsive_placeholder_generated[ 'last_request' ] ) . '</code>' ; ?>
102
+ </p>
103
+ <?php endif ; ?>
104
+ <?php if ( ! empty( $last_responsive_placeholder_generated[ 'queue' ] ) ) : ?>
105
+ <div class="litespeed-callout-warning">
106
+ <h4><?php echo __( 'Size list in queue waiting for cron','litespeed-cache' ) ; ?></h4>
107
+ <p>
108
+ <?php echo implode( '<br />', $last_responsive_placeholder_generated[ 'queue' ] ) ; ?>
109
+ </p>
110
+ </p>
111
+ <a href="<?php echo LiteSpeed_Cache_Utility::build_url( LiteSpeed_Cache::ACTION_MEDIA, LiteSpeed_Cache_Media::TYPE_GENERATE_PLACEHOLDER ) ; ?>" class="litespeed-btn-success">
112
+ <?php echo __( 'Run Queue Manually', 'litespeed-cache' ) ; ?>
113
+ </a>
114
+ <?php endif ; ?>
115
+ </div>
116
+ <?php endif ; ?>
117
+ </td>
118
+ </tr>
119
+
120
  <tr>
121
  <th><?php echo __( 'Lazy Load Iframes', 'litespeed-cache' ) ; ?></th>
122
  <td>
cli/litespeed-cache-cli-iapi.class.php CHANGED
@@ -179,5 +179,22 @@ class LiteSpeed_Cache_CLI_IAPI
179
  $this->status() ;
180
  }
181
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
182
 
183
  }
179
  $this->status() ;
180
  }
181
 
182
+ /**
183
+ * Remove original image backups
184
+ *
185
+ * ## OPTIONS
186
+ *
187
+ * ## EXAMPLES
188
+ *
189
+ * # Remove original image backups
190
+ * $ wp lscache-iapi rm_bkup
191
+ *
192
+ */
193
+ public function rm_bkup()
194
+ {
195
+ $msg = $this->_img_optm_instance->rm_bkup() ;
196
+ WP_CLI::success( $msg ) ;
197
+ }
198
+
199
 
200
  }
inc/const.cls.php CHANGED
@@ -179,6 +179,9 @@ class LiteSpeed_Cache_Const
179
 
180
  const OPID_MEDIA_IMG_LAZY = 'media_img_lazy' ;
181
  const OPID_MEDIA_IMG_LAZY_PLACEHOLDER = 'media_img_lazy_placeholder' ;
 
 
 
182
  const OPID_MEDIA_IFRAME_LAZY = 'media_iframe_lazy' ;
183
  const OPID_MEDIA_IMG_LAZYJS_INLINE = 'media_img_lazyjs_inline' ;
184
  const OPT_MEDIA_OPTM_AUTO = 'media_optm_auto' ;
@@ -462,6 +465,9 @@ class LiteSpeed_Cache_Const
462
 
463
  self::OPID_MEDIA_IMG_LAZY => false,
464
  self::OPID_MEDIA_IMG_LAZY_PLACEHOLDER => '',
 
 
 
465
  self::OPID_MEDIA_IFRAME_LAZY => false,
466
  self::OPID_MEDIA_IMG_LAZYJS_INLINE => false,
467
  self::OPT_MEDIA_OPTM_AUTO => false,
179
 
180
  const OPID_MEDIA_IMG_LAZY = 'media_img_lazy' ;
181
  const OPID_MEDIA_IMG_LAZY_PLACEHOLDER = 'media_img_lazy_placeholder' ;
182
+ const OPID_MEDIA_PLACEHOLDER_RESP = 'media_placeholder_resp' ;
183
+ const OPID_MEDIA_PLACEHOLDER_RESP_COLOR = 'media_placeholder_resp_color' ;
184
+ const OPID_MEDIA_PLACEHOLDER_RESP_ASYNC = 'media_placeholder_resp_async' ;
185
  const OPID_MEDIA_IFRAME_LAZY = 'media_iframe_lazy' ;
186
  const OPID_MEDIA_IMG_LAZYJS_INLINE = 'media_img_lazyjs_inline' ;
187
  const OPT_MEDIA_OPTM_AUTO = 'media_optm_auto' ;
465
 
466
  self::OPID_MEDIA_IMG_LAZY => false,
467
  self::OPID_MEDIA_IMG_LAZY_PLACEHOLDER => '',
468
+ self::OPID_MEDIA_PLACEHOLDER_RESP => false,
469
+ self::OPID_MEDIA_PLACEHOLDER_RESP_COLOR => '#cfd4db',
470
+ self::OPID_MEDIA_PLACEHOLDER_RESP_ASYNC => true,
471
  self::OPID_MEDIA_IFRAME_LAZY => false,
472
  self::OPID_MEDIA_IMG_LAZYJS_INLINE => false,
473
  self::OPT_MEDIA_OPTM_AUTO => false,
inc/css.cls.php CHANGED
@@ -94,9 +94,9 @@ class LiteSpeed_Cache_CSS
94
  * Generate realpath of ccss
95
  *
96
  * @since 2.3
97
- * @access public
98
  */
99
- public static function ccss_realpath( $ccss_type )
100
  {
101
  return LSCWP_CONTENT_DIR . "/cache/ccss/$ccss_type.css" ;
102
  }
@@ -137,7 +137,7 @@ class LiteSpeed_Cache_CSS
137
  }
138
 
139
  $ccss_type = $this->_which_css() ;
140
- $ccss_file = self::ccss_realpath( $ccss_type ) ;
141
 
142
  if ( file_exists( $ccss_file ) ) {
143
  LiteSpeed_Cache_Log::debug2( '[CSS] existing ccss ' . $ccss_file ) ;
@@ -212,7 +212,7 @@ class LiteSpeed_Cache_CSS
212
  {
213
  $req_summary = self::get_summary() ;
214
 
215
- $ccss_file = self::ccss_realpath( $ccss_type ) ;
216
 
217
  // Update css request status
218
  $req_summary[ 'curr_request' ] = time() ;
94
  * Generate realpath of ccss
95
  *
96
  * @since 2.3
97
+ * @access private
98
  */
99
+ private function _ccss_realpath( $ccss_type )
100
  {
101
  return LSCWP_CONTENT_DIR . "/cache/ccss/$ccss_type.css" ;
102
  }
137
  }
138
 
139
  $ccss_type = $this->_which_css() ;
140
+ $ccss_file = $this->_ccss_realpath( $ccss_type ) ;
141
 
142
  if ( file_exists( $ccss_file ) ) {
143
  LiteSpeed_Cache_Log::debug2( '[CSS] existing ccss ' . $ccss_file ) ;
212
  {
213
  $req_summary = self::get_summary() ;
214
 
215
+ $ccss_file = $this->_ccss_realpath( $ccss_type ) ;
216
 
217
  // Update css request status
218
  $req_summary[ 'curr_request' ] = time() ;
inc/gui.class.php CHANGED
@@ -444,6 +444,16 @@ class LiteSpeed_Cache_GUI
444
  'meta' => array( 'tabindex' => '0' ),
445
  ) );
446
  }
 
 
 
 
 
 
 
 
 
 
447
  }
448
 
449
  /**
444
  'meta' => array( 'tabindex' => '0' ),
445
  ) );
446
  }
447
+
448
+ if ( LiteSpeed_Cache_Media::has_placehoder_cache() ) {
449
+ $wp_admin_bar->add_menu( array(
450
+ 'parent' => 'litespeed-menu',
451
+ 'id' => 'litespeed-purge-placeholder',
452
+ 'title' => __( 'Purge All', 'litespeed-cache' ) . ' - ' . __( 'Placeholder Cache', 'litespeed-cache' ),
453
+ 'href' => LiteSpeed_Cache_Utility::build_url( LiteSpeed_Cache::ACTION_PURGE, LiteSpeed_Cache_Purge::TYPE_PURGE_ALL_PLACEHOLDER ),
454
+ 'meta' => array( 'tabindex' => '0' ),
455
+ ) );
456
+ }
457
  }
458
 
459
  /**
inc/img_optm.class.php CHANGED
@@ -1691,6 +1691,17 @@ class LiteSpeed_Cache_Img_Optm
1691
 
1692
  }
1693
 
 
 
 
 
 
 
 
 
 
 
 
1694
  /**
1695
  * Delete bkup original images storage
1696
  *
@@ -1735,6 +1746,7 @@ class LiteSpeed_Cache_Img_Optm
1735
  $msg = sprintf( __( 'Removed %1$s images and saved %2$s successfully.', 'litespeed-cache' ), $i, LiteSpeed_Cache_Utility::real_size( $total_size ) ) ;
1736
  LiteSpeed_Cache_Admin_Display::succeed( $msg ) ;
1737
 
 
1738
  }
1739
 
1740
  /**
1691
 
1692
  }
1693
 
1694
+ /**
1695
+ * Remove backups for CLI usage
1696
+ *
1697
+ * @since 2.5
1698
+ * @access public
1699
+ */
1700
+ public function rm_bkup()
1701
+ {
1702
+ return $this->_rm_bkup() ;
1703
+ }
1704
+
1705
  /**
1706
  * Delete bkup original images storage
1707
  *
1746
  $msg = sprintf( __( 'Removed %1$s images and saved %2$s successfully.', 'litespeed-cache' ), $i, LiteSpeed_Cache_Utility::real_size( $total_size ) ) ;
1747
  LiteSpeed_Cache_Admin_Display::succeed( $msg ) ;
1748
 
1749
+ return $msg ;
1750
  }
1751
 
1752
  /**
inc/litespeed-cache.class.php CHANGED
@@ -25,7 +25,7 @@ class LiteSpeed_Cache
25
 
26
  const NAME = 'LiteSpeed Cache' ;
27
  const PLUGIN_NAME = 'litespeed-cache' ;
28
- const PLUGIN_VERSION = '2.4.4' ;
29
 
30
  const PAGE_EDIT_HTACCESS = 'lscache-edit-htaccess' ;
31
 
25
 
26
  const NAME = 'LiteSpeed Cache' ;
27
  const PLUGIN_NAME = 'litespeed-cache' ;
28
+ const PLUGIN_VERSION = '2.5.1' ;
29
 
30
  const PAGE_EDIT_HTACCESS = 'lscache-edit-htaccess' ;
31
 
inc/media.class.php CHANGED
@@ -19,10 +19,18 @@ class LiteSpeed_Cache_Media
19
 
20
  const LAZY_LIB = '/min/lazyload.js' ;
21
 
 
 
 
22
  private $content ;
23
  private $wp_upload_dir ;
24
 
25
- private $cfg_img_webp ;
 
 
 
 
 
26
 
27
  /**
28
  * Init
@@ -39,10 +47,10 @@ class LiteSpeed_Cache_Media
39
  if ( $this->can_media() ) {
40
  $this->_static_request_check() ;
41
 
42
- $this->cfg_img_webp = self::webp_enabled() ;
43
 
44
  // Due to ajax call doesn't send correct accept header, have to limit webp to HTML only
45
- if ( $this->cfg_img_webp ) {
46
  /**
47
  * Add vary filter
48
  * @since 1.6.2
@@ -64,6 +72,15 @@ class LiteSpeed_Cache_Media
64
  }
65
 
66
  add_action( 'litspeed_after_admin_init', array( $this, 'after_admin_init' ) ) ;
 
 
 
 
 
 
 
 
 
67
  }
68
 
69
  /**
@@ -341,26 +358,6 @@ eot;
341
  return Litespeed_File::read( $file ) ;
342
  }
343
 
344
- /**
345
- * Handle all request actions from main cls
346
- *
347
- * @since 1.6
348
- * @access public
349
- */
350
- public static function handler()
351
- {
352
- $instance = self::get_instance() ;
353
-
354
- $type = LiteSpeed_Cache_Router::verify_type() ;
355
-
356
- switch ( $type ) {
357
- default:
358
- break ;
359
- }
360
-
361
- LiteSpeed_Cache_Admin::redirect() ;
362
- }
363
-
364
  /**
365
  * Run lazy load process
366
  * NOTE: As this is after cache finalized, can NOT set any cache control anymore
@@ -404,7 +401,7 @@ eot;
404
  * Use webp for optimized images
405
  * @since 1.6.2
406
  */
407
- if ( $this->cfg_img_webp && $this->webp_support() ) {
408
  $this->_replace_buffer_img_webp() ;
409
  }
410
 
@@ -412,19 +409,29 @@ eot;
412
  $cfg_iframe_lazy = LiteSpeed_Cache::config( LiteSpeed_Cache_Config::OPID_MEDIA_IFRAME_LAZY ) ;
413
 
414
  if ( $cfg_img_lazy ) {
415
- list( $src_list, $html_list ) = $this->_parse_img() ;
416
  $html_list_ori = $html_list ;
417
  }
418
 
419
  // image lazy load
420
  if ( $cfg_img_lazy ) {
421
 
422
- $placeholder = LiteSpeed_Cache::config( LiteSpeed_Cache_Config::OPID_MEDIA_IMG_LAZY_PLACEHOLDER ) ?: LITESPEED_PLACEHOLDER ;
423
 
424
  foreach ( $html_list as $k => $v ) {
 
 
 
 
 
 
 
 
 
 
425
  $snippet = '<noscript>' . $v . '</noscript>' ;
426
  $v = str_replace( array( ' src=', ' srcset=', ' sizes=' ), array( ' data-src=', ' data-srcset=', ' data-sizes=' ), $v ) ;
427
- $v = str_replace( '<img ', '<img data-lazyloaded="1" src="' . $placeholder . '" ', $v ) ;
428
  $snippet = $v . $snippet ;
429
 
430
  $html_list[ $k ] = $snippet ;
@@ -465,6 +472,81 @@ eot;
465
  }
466
  }
467
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
468
  /**
469
  * Parse img src
470
  *
@@ -485,6 +567,7 @@ eot;
485
 
486
  $src_list = array() ;
487
  $html_list = array() ;
 
488
 
489
  $content = preg_replace( '#<!--.*-->#sU', '', $this->content ) ;
490
  preg_match_all( '#<img \s*([^>]+)/?>#isU', $content, $matches, PREG_SET_ORDER ) ;
@@ -525,11 +608,17 @@ eot;
525
  continue ;
526
  }
527
 
 
 
 
 
 
528
  $src_list[] = $attrs[ 'src' ] ;
529
  $html_list[] = $match[ 0 ] ;
 
530
  }
531
 
532
- return array( $src_list, $html_list ) ;
533
  }
534
 
535
  /**
@@ -745,6 +834,202 @@ eot;
745
  return $url ;
746
  }
747
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
748
  /**
749
  * Get the current instance object.
750
  *
19
 
20
  const LAZY_LIB = '/min/lazyload.js' ;
21
 
22
+ const TYPE_GENERATE_PLACEHOLDER = 'generate_placeholder' ;
23
+ const DB_PLACEHOLDER_SUMMARY = 'litespeed-media-placeholder-summary' ;
24
+
25
  private $content ;
26
  private $wp_upload_dir ;
27
 
28
+ private $_cfg_img_webp ;
29
+ private $_cfg_placeholder_resp ;
30
+ private $_cfg_placeholder_resp_color ;
31
+ private $_cfg_placeholder_resp_async ;
32
+ private $_placeholder_resp_dict = array() ;
33
+ private $_ph_queue = array() ;
34
 
35
  /**
36
  * Init
47
  if ( $this->can_media() ) {
48
  $this->_static_request_check() ;
49
 
50
+ $this->_cfg_img_webp = self::webp_enabled() ;
51
 
52
  // Due to ajax call doesn't send correct accept header, have to limit webp to HTML only
53
+ if ( $this->_cfg_img_webp ) {
54
  /**
55
  * Add vary filter
56
  * @since 1.6.2
72
  }
73
 
74
  add_action( 'litspeed_after_admin_init', array( $this, 'after_admin_init' ) ) ;
75
+
76
+ $this->_cfg_placeholder_resp = LiteSpeed_Cache::config( LiteSpeed_Cache_Config::OPID_MEDIA_PLACEHOLDER_RESP ) ;
77
+ $this->_cfg_placeholder_resp_async = LiteSpeed_Cache::config( LiteSpeed_Cache_Config::OPID_MEDIA_PLACEHOLDER_RESP_ASYNC ) ;
78
+ $this->_cfg_placeholder_resp_color = LiteSpeed_Cache::config( LiteSpeed_Cache_Config::OPID_MEDIA_PLACEHOLDER_RESP_COLOR ) ;
79
+ // Encode the color
80
+ if ( $this->_cfg_placeholder_resp_color ) {
81
+ $this->_cfg_placeholder_resp_color = base64_encode( $this->_cfg_placeholder_resp_color ) ;
82
+ }
83
+
84
  }
85
 
86
  /**
358
  return Litespeed_File::read( $file ) ;
359
  }
360
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
361
  /**
362
  * Run lazy load process
363
  * NOTE: As this is after cache finalized, can NOT set any cache control anymore
401
  * Use webp for optimized images
402
  * @since 1.6.2
403
  */
404
+ if ( $this->_cfg_img_webp && $this->webp_support() ) {
405
  $this->_replace_buffer_img_webp() ;
406
  }
407
 
409
  $cfg_iframe_lazy = LiteSpeed_Cache::config( LiteSpeed_Cache_Config::OPID_MEDIA_IFRAME_LAZY ) ;
410
 
411
  if ( $cfg_img_lazy ) {
412
+ list( $src_list, $html_list, $placeholder_list ) = $this->_parse_img() ;
413
  $html_list_ori = $html_list ;
414
  }
415
 
416
  // image lazy load
417
  if ( $cfg_img_lazy ) {
418
 
419
+ $default_placeholder = LiteSpeed_Cache::config( LiteSpeed_Cache_Config::OPID_MEDIA_IMG_LAZY_PLACEHOLDER ) ?: LITESPEED_PLACEHOLDER ;
420
 
421
  foreach ( $html_list as $k => $v ) {
422
+ $size = $placeholder_list[ $k ] ;
423
+ // Check if need to enable responsive placeholder or not
424
+ $this_placeholder = $this->_placeholder( $size ) ?: $default_placeholder ;
425
+
426
+ $additional_attr = '' ;
427
+ if ( $this_placeholder != $default_placeholder ) {
428
+ LiteSpeed_Cache_Log::debug2( '[Media] Use resp placeholder [size] ' . $size ) ;
429
+ $additional_attr = ' data-placeholder-resp="' . $size . '"' ;
430
+ }
431
+
432
  $snippet = '<noscript>' . $v . '</noscript>' ;
433
  $v = str_replace( array( ' src=', ' srcset=', ' sizes=' ), array( ' data-src=', ' data-srcset=', ' data-sizes=' ), $v ) ;
434
+ $v = str_replace( '<img ', '<img data-lazyloaded="1"' . $additional_attr . ' src="' . $this_placeholder . '" ', $v ) ;
435
  $snippet = $v . $snippet ;
436
 
437
  $html_list[ $k ] = $snippet ;
472
  }
473
  }
474
 
475
+ /**
476
+ * Generate responsive placeholder
477
+ *
478
+ * @since 2.5.1
479
+ * @access private
480
+ */
481
+ private function _placeholder( $size )
482
+ {
483
+ if ( ! $size ) {
484
+ return false ;
485
+ }
486
+
487
+ if ( ! $this->_cfg_placeholder_resp ) {
488
+ return false ;
489
+ }
490
+
491
+ // Check if its already in dict or not
492
+ if ( ! empty( $this->_placeholder_resp_dict[ $size ] ) ) {
493
+ LiteSpeed_Cache_Log::debug2( '[Media] Resp placeholder already in dict [size] ' . $size ) ;
494
+
495
+ return $this->_placeholder_resp_dict[ $size ] ;
496
+ }
497
+
498
+ // Need to generate the responsive placeholder
499
+ $placeholder_realpath = $this->_placeholder_realpath( $size ) ;
500
+ if ( file_exists( $placeholder_realpath ) ) {
501
+ LiteSpeed_Cache_Log::debug2( '[Media] Resp placeholder file exists [size] ' . $size ) ;
502
+ $this->_placeholder_resp_dict[ $size ] = Litespeed_File::read( $placeholder_realpath ) ;
503
+
504
+ return $this->_placeholder_resp_dict[ $size ] ;
505
+ }
506
+
507
+ // Add to cron queue
508
+
509
+ // Prevent repeated requests
510
+ if ( in_array( $size, $this->_ph_queue ) ) {
511
+ LiteSpeed_Cache_Log::debug2( '[Media] Resp placeholder file bypass generating due to in queue [size] ' . $size ) ;
512
+ return false ;
513
+ }
514
+ $this->_ph_queue[] = $size ;
515
+
516
+ $req_summary = self::get_summary() ;
517
+
518
+ // Send request to generate placeholder
519
+ if ( ! $this->_cfg_placeholder_resp_async ) {
520
+ // If requested recently, bypass
521
+ if ( $req_summary && ! empty( $req_summary[ 'curr_request' ] ) && time() - $req_summary[ 'curr_request' ] < 300 ) {
522
+ LiteSpeed_Cache_Log::debug2( '[Media] Resp placeholder file bypass generating due to interval limit [size] ' . $size ) ;
523
+ return false ;
524
+ }
525
+ // Generate immediately
526
+ $this->_placeholder_resp_dict[ $size ] = $this->_generate_placeholder( $size ) ;
527
+
528
+ return $this->_placeholder_resp_dict[ $size ] ;
529
+ }
530
+
531
+ // Store it to prepare for cron
532
+ if ( empty( $req_summary[ 'queue' ] ) ) {
533
+ $req_summary[ 'queue' ] = array() ;
534
+ }
535
+ if ( in_array( $size, $req_summary[ 'queue' ] ) ) {
536
+ LiteSpeed_Cache_Log::debug2( '[Media] Resp placeholder already in queue [size] ' . $size ) ;
537
+
538
+ return false ;
539
+ }
540
+
541
+ $req_summary[ 'queue' ][] = $size ;
542
+
543
+ LiteSpeed_Cache_Log::debug( '[Media] Added placeholder queue [size] ' . $size ) ;
544
+
545
+ $this->_save_summary( $req_summary ) ;
546
+ return false ;
547
+
548
+ }
549
+
550
  /**
551
  * Parse img src
552
  *
567
 
568
  $src_list = array() ;
569
  $html_list = array() ;
570
+ $placeholder_list = array() ;
571
 
572
  $content = preg_replace( '#<!--.*-->#sU', '', $this->content ) ;
573
  preg_match_all( '#<img \s*([^>]+)/?>#isU', $content, $matches, PREG_SET_ORDER ) ;
608
  continue ;
609
  }
610
 
611
+ $placeholder = false ;
612
+ if ( ! empty( $attrs[ 'width' ] ) && ! empty( $attrs[ 'height' ] ) ) {
613
+ $placeholder = $attrs[ 'width' ] . 'x' . $attrs[ 'height' ] ;
614
+ }
615
+
616
  $src_list[] = $attrs[ 'src' ] ;
617
  $html_list[] = $match[ 0 ] ;
618
+ $placeholder_list[] = $placeholder ;
619
  }
620
 
621
+ return array( $src_list, $html_list, $placeholder_list ) ;
622
  }
623
 
624
  /**
834
  return $url ;
835
  }
836
 
837
+ /**
838
+ * Check if there is a queue for cron or not
839
+ *
840
+ * @since 2.5.1
841
+ * @access public
842
+ */
843
+ public static function has_queue()
844
+ {
845
+ $req_summary = self::get_summary() ;
846
+ if ( ! empty( $req_summary[ 'queue' ] ) ) {
847
+ return true ;
848
+ }
849
+
850
+ return false ;
851
+ }
852
+
853
+ /**
854
+ * Check if there is a placeholder cache folder
855
+ *
856
+ * @since 2.5.1
857
+ * @access public
858
+ */
859
+ public static function has_placehoder_cache()
860
+ {
861
+ return is_dir( LSCWP_CONTENT_DIR . '/cache/placeholder' ) ;
862
+ }
863
+
864
+ /**
865
+ * Save image placeholder summary
866
+ *
867
+ * @since 2.5.1
868
+ * @access private
869
+ */
870
+ private function _save_summary( $data )
871
+ {
872
+ update_option( self::DB_PLACEHOLDER_SUMMARY, $data ) ;
873
+ }
874
+
875
+ /**
876
+ * Read last time generated info
877
+ *
878
+ * @since 2.5.1
879
+ * @access public
880
+ */
881
+ public static function get_summary()
882
+ {
883
+ return get_option( self::DB_PLACEHOLDER_SUMMARY, array() ) ;
884
+ }
885
+
886
+ /**
887
+ * Generate realpath of placeholder file
888
+ *
889
+ * @since 2.5.1
890
+ * @access private
891
+ */
892
+ private function _placeholder_realpath( $size )
893
+ {
894
+ return LSCWP_CONTENT_DIR . "/cache/placeholder/$size." . md5( $this->_cfg_placeholder_resp_color ) ;
895
+ }
896
+
897
+ /**
898
+ * Delete file-based cache folder
899
+ *
900
+ * @since 2.5.1
901
+ * @access public
902
+ */
903
+ public function rm_cache_folder()
904
+ {
905
+ if ( file_exists( LSCWP_CONTENT_DIR . '/cache/placeholder' ) ) {
906
+ Litespeed_File::rrmdir( LSCWP_CONTENT_DIR . '/cache/placeholder' ) ;
907
+ }
908
+
909
+ // Clear placeholder in queue too
910
+ $req_summary = self::get_summary() ;
911
+ $req_summary[ 'queue' ] = array() ;
912
+ $req_summary[ 'curr_request' ] = 0 ;
913
+ $this->_save_summary( $req_summary ) ;
914
+
915
+ LiteSpeed_Cache_Log::debug2( '[Media] Cleared placeholder queue' ) ;
916
+ }
917
+
918
+ /**
919
+ * Cron placeholder generation
920
+ *
921
+ * @since 2.5.1
922
+ * @access public
923
+ */
924
+ public static function cron_placeholder( $continue = false )
925
+ {
926
+ $req_summary = self::get_summary() ;
927
+ if ( empty( $req_summary[ 'queue' ] ) ) {
928
+ return ;
929
+ }
930
+
931
+ // For cron, need to check request interval too
932
+ if ( ! $continue ) {
933
+ if ( $req_summary && ! empty( $req_summary[ 'curr_request' ] ) && time() - $req_summary[ 'curr_request' ] < 300 ) {
934
+ return ;
935
+ }
936
+ }
937
+
938
+ foreach ( $req_summary[ 'queue' ] as $v ) {
939
+ LiteSpeed_Cache_Log::debug( '[Media] cron job [size] ' . $v ) ;
940
+
941
+ self::get_instance()->_generate_placeholder( $v ) ;
942
+
943
+ // only request first one
944
+ if ( ! $continue ) {
945
+ return ;
946
+ }
947
+ }
948
+ }
949
+
950
+ /**
951
+ * Send to LiteSpeed API to generate placeholder
952
+ *
953
+ * @since 2.5.1
954
+ * @access private
955
+ */
956
+ private function _generate_placeholder( $size )
957
+ {
958
+ $req_summary = self::get_summary() ;
959
+
960
+ $file = $this->_placeholder_realpath( $size ) ;
961
+
962
+ // Update request status
963
+ $req_summary[ 'curr_request' ] = time() ;
964
+ $this->_save_summary( $req_summary ) ;
965
+
966
+ // Generate placeholder
967
+ $url = 'https://wp.api.litespeedtech.com/placeholder/' . $size . '?v=' . LiteSpeed_Cache::PLUGIN_VERSION . '&c=' . $this->_cfg_placeholder_resp_color ;
968
+
969
+ LiteSpeed_Cache_Log::debug( '[Media] posting to : ' . $url ) ;
970
+
971
+ $response = wp_remote_get( $url, array( 'timeout' => 15 ) ) ;
972
+
973
+ // Parse response data
974
+ if ( is_wp_error( $response ) ) {
975
+ $error_message = $response->get_error_message() ;
976
+ LiteSpeed_Cache_Log::debug( '[Media] failed to post: ' . $error_message ) ;
977
+ return false ;
978
+ }
979
+
980
+ $data = $response[ 'body' ] ;
981
+
982
+ if ( strpos( $data, 'data:image/png;base64,' ) !== 0 ) {
983
+ LiteSpeed_Cache_Log::debug( '[Media] failed to decode response: ' . $data ) ;
984
+ return false ;
985
+ }
986
+
987
+ // Write to file
988
+ Litespeed_File::save( $file, $data, true ) ;
989
+
990
+ // Save summary data
991
+ $req_summary[ 'last_spent' ] = time() - $req_summary[ 'curr_request' ] ;
992
+ $req_summary[ 'last_request' ] = $req_summary[ 'curr_request' ] ;
993
+ $req_summary[ 'curr_request' ] = 0 ;
994
+ if ( empty( $req_summary[ 'history' ] ) ) {
995
+ $req_summary[ 'history' ] = array() ;
996
+ }
997
+ $req_summary[ 'history' ][] = $size ;
998
+ unset( $req_summary[ 'queue' ][ array_search( $size, $req_summary[ 'queue' ] ) ] ) ;
999
+
1000
+ $this->_save_summary( $req_summary ) ;
1001
+
1002
+ LiteSpeed_Cache_Log::debug( '[Media] saved placeholder ' . $file ) ;
1003
+
1004
+ LiteSpeed_Cache_Log::debug2( '[Media] placeholder con: ' . $data ) ;
1005
+
1006
+ return $data ;
1007
+ }
1008
+
1009
+ /**
1010
+ * Handle all request actions from main cls
1011
+ *
1012
+ * @since 2.5.1
1013
+ * @access public
1014
+ */
1015
+ public static function handler()
1016
+ {
1017
+ $instance = self::get_instance() ;
1018
+
1019
+ $type = LiteSpeed_Cache_Router::verify_type() ;
1020
+
1021
+ switch ( $type ) {
1022
+ case self::TYPE_GENERATE_PLACEHOLDER :
1023
+ self::cron_placeholder( true ) ;
1024
+ break ;
1025
+
1026
+ default:
1027
+ break ;
1028
+ }
1029
+
1030
+ LiteSpeed_Cache_Admin::redirect() ;
1031
+ }
1032
+
1033
  /**
1034
  * Get the current instance object.
1035
  *
inc/optimize.class.php CHANGED
@@ -942,6 +942,12 @@ class LiteSpeed_Cache_Optimize
942
  continue ;
943
  }
944
 
 
 
 
 
 
 
945
  // to avoid multiple replacement
946
  if ( in_array( $match[ 0 ], $html_list ) ) {
947
  continue ;
942
  continue ;
943
  }
944
 
945
+ $url_parsed = parse_url( $attrs[ 'src' ], PHP_URL_PATH ) ;
946
+ if ( substr( $url_parsed, -3 ) !== '.js' ) {
947
+ LiteSpeed_Cache_Log::debug2( '[Optm] _parse_js bypassed due to not js file ' . $url_parsed ) ;
948
+ continue ;
949
+ }
950
+
951
  // to avoid multiple replacement
952
  if ( in_array( $match[ 0 ], $html_list ) ) {
953
  continue ;
inc/purge.class.php CHANGED
@@ -26,6 +26,7 @@ class LiteSpeed_Cache_Purge
26
  const TYPE_PURGE_ALL_LSCACHE = 'purge_all_lscache' ;
27
  const TYPE_PURGE_ALL_CSSJS = 'purge_all_cssjs' ;
28
  const TYPE_PURGE_ALL_CCSS = 'purge_all_ccss' ;
 
29
  const TYPE_PURGE_ALL_OBJECT = 'purge_all_object' ;
30
  const TYPE_PURGE_ALL_OPCACHE = 'purge_all_opcache' ;
31
 
@@ -88,6 +89,10 @@ class LiteSpeed_Cache_Purge
88
  $instance->_purge_all_ccss() ;
89
  break ;
90
 
 
 
 
 
91
  case self::TYPE_PURGE_ALL_OBJECT :
92
  $instance->_purge_all_object() ;
93
  break ;
@@ -141,6 +146,7 @@ class LiteSpeed_Cache_Purge
141
  $this->_purge_all_lscache( true ) ;
142
  $this->_purge_all_cssjs( true ) ;
143
  $this->_purge_all_ccss( true ) ;
 
144
  $this->_purge_all_object( true ) ;
145
  $this->_purge_all_opcache( true ) ;
146
 
@@ -198,6 +204,22 @@ class LiteSpeed_Cache_Purge
198
  }
199
  }
200
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
201
  /**
202
  * Alerts LiteSpeed Web Server to purge pages.
203
  *
26
  const TYPE_PURGE_ALL_LSCACHE = 'purge_all_lscache' ;
27
  const TYPE_PURGE_ALL_CSSJS = 'purge_all_cssjs' ;
28
  const TYPE_PURGE_ALL_CCSS = 'purge_all_ccss' ;
29
+ const TYPE_PURGE_ALL_PLACEHOLDER = 'purge_all_placeholder' ;
30
  const TYPE_PURGE_ALL_OBJECT = 'purge_all_object' ;
31
  const TYPE_PURGE_ALL_OPCACHE = 'purge_all_opcache' ;
32
 
89
  $instance->_purge_all_ccss() ;
90
  break ;
91
 
92
+ case self::TYPE_PURGE_ALL_PLACEHOLDER :
93
+ $instance->_purge_all_placeholder() ;
94
+ break ;
95
+
96
  case self::TYPE_PURGE_ALL_OBJECT :
97
  $instance->_purge_all_object() ;
98
  break ;
146
  $this->_purge_all_lscache( true ) ;
147
  $this->_purge_all_cssjs( true ) ;
148
  $this->_purge_all_ccss( true ) ;
149
+ $this->_purge_all_placeholder( true ) ;
150
  $this->_purge_all_object( true ) ;
151
  $this->_purge_all_opcache( true ) ;
152
 
204
  }
205
  }
206
 
207
+ /**
208
+ * Delete all placeholder images
209
+ *
210
+ * @since 2.5.1
211
+ * @access private
212
+ */
213
+ private function _purge_all_placeholder( $silence = false )
214
+ {
215
+ LiteSpeed_Cache_Media::get_instance()->rm_cache_folder() ;
216
+
217
+ if ( ! $silence ) {
218
+ $msg = __( 'Cleaned all placeholder files.', 'litespeed-cache' ) ;
219
+ ! defined( 'LITESPEED_PURGE_SILENT' ) && LiteSpeed_Cache_Admin_Display::succeed( $msg ) ;
220
+ }
221
+ }
222
+
223
  /**
224
  * Alerts LiteSpeed Web Server to purge pages.
225
  *
inc/task.class.php CHANGED
@@ -18,6 +18,7 @@ class LiteSpeed_Cache_Task
18
  const CRON_ACTION_HOOK_IMGOPTM = 'litespeed_imgoptm_trigger' ;
19
  const CRON_ACTION_HOOK_IMGOPTM_AUTO_REQUEST = 'litespeed_imgoptm_auto_request_trigger' ;
20
  const CRON_ACTION_HOOK_CCSS = 'litespeed_ccss_trigger' ;
 
21
  const CRON_FITLER_CRAWLER = 'litespeed_crawl_filter' ;
22
  const CRON_FITLER = 'litespeed_filter' ;
23
 
@@ -60,6 +61,13 @@ class LiteSpeed_Cache_Task
60
 
61
  add_action( self::CRON_ACTION_HOOK_CCSS, 'LiteSpeed_Cache_CSS::cron_ccss' ) ;
62
  }
 
 
 
 
 
 
 
63
  }
64
 
65
  /**
@@ -161,6 +169,23 @@ class LiteSpeed_Cache_Task
161
  }
162
  }
163
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
164
  /**
165
  * Schedule cron crawler
166
  *
18
  const CRON_ACTION_HOOK_IMGOPTM = 'litespeed_imgoptm_trigger' ;
19
  const CRON_ACTION_HOOK_IMGOPTM_AUTO_REQUEST = 'litespeed_imgoptm_auto_request_trigger' ;
20
  const CRON_ACTION_HOOK_CCSS = 'litespeed_ccss_trigger' ;
21
+ const CRON_ACTION_HOOK_IMG_PLACEHOLDER = 'litespeed_img_placeholder_trigger' ;
22
  const CRON_FITLER_CRAWLER = 'litespeed_crawl_filter' ;
23
  const CRON_FITLER = 'litespeed_filter' ;
24
 
61
 
62
  add_action( self::CRON_ACTION_HOOK_CCSS, 'LiteSpeed_Cache_CSS::cron_ccss' ) ;
63
  }
64
+
65
+ // Register image placeholder generation
66
+ if ( LiteSpeed_Cache::config( LiteSpeed_Cache_Config::OPID_MEDIA_PLACEHOLDER_RESP_ASYNC ) && LiteSpeed_Cache_Media::has_queue() ) {
67
+ self::schedule_filter_placeholder() ;
68
+
69
+ add_action( self::CRON_ACTION_HOOK_IMG_PLACEHOLDER, 'LiteSpeed_Cache_Media::cron_placeholder' ) ;
70
+ }
71
  }
72
 
73
  /**
169
  }
170
  }
171
 
172
+ /**
173
+ * Schedule cron image placeholder generation
174
+ *
175
+ * @since 2.5.1
176
+ * @access public
177
+ */
178
+ public static function schedule_filter_placeholder()
179
+ {
180
+ add_filter( 'cron_schedules', 'LiteSpeed_Cache_Task::lscache_cron_filter' ) ;
181
+
182
+ // Schedule event here to see if it can lost again or not
183
+ if( ! wp_next_scheduled( self::CRON_ACTION_HOOK_IMG_PLACEHOLDER ) ) {
184
+ LiteSpeed_Cache_Log::debug( 'Cron log: ......image placeholder cron hook register......' ) ;
185
+ wp_schedule_event( time(), self::CRON_FITLER, self::CRON_ACTION_HOOK_IMG_PLACEHOLDER ) ;
186
+ }
187
+ }
188
+
189
  /**
190
  * Schedule cron crawler
191
  *
includes/litespeed-cache-gui.class.php CHANGED
@@ -444,6 +444,16 @@ class LiteSpeed_Cache_GUI
444
  'meta' => array( 'tabindex' => '0' ),
445
  ) );
446
  }
 
 
 
 
 
 
 
 
 
 
447
  }
448
 
449
  /**
444
  'meta' => array( 'tabindex' => '0' ),
445
  ) );
446
  }
447
+
448
+ if ( LiteSpeed_Cache_Media::has_placehoder_cache() ) {
449
+ $wp_admin_bar->add_menu( array(
450
+ 'parent' => 'litespeed-menu',
451
+ 'id' => 'litespeed-purge-placeholder',
452
+ 'title' => __( 'Purge All', 'litespeed-cache' ) . ' - ' . __( 'Placeholder Cache', 'litespeed-cache' ),
453
+ 'href' => LiteSpeed_Cache_Utility::build_url( LiteSpeed_Cache::ACTION_PURGE, LiteSpeed_Cache_Purge::TYPE_PURGE_ALL_PLACEHOLDER ),
454
+ 'meta' => array( 'tabindex' => '0' ),
455
+ ) );
456
+ }
457
  }
458
 
459
  /**
includes/litespeed-cache-optimize.class.php CHANGED
@@ -942,6 +942,12 @@ class LiteSpeed_Cache_Optimize
942
  continue ;
943
  }
944
 
 
 
 
 
 
 
945
  // to avoid multiple replacement
946
  if ( in_array( $match[ 0 ], $html_list ) ) {
947
  continue ;
942
  continue ;
943
  }
944
 
945
+ $url_parsed = parse_url( $attrs[ 'src' ], PHP_URL_PATH ) ;
946
+ if ( substr( $url_parsed, -3 ) !== '.js' ) {
947
+ LiteSpeed_Cache_Log::debug2( '[Optm] _parse_js bypassed due to not js file ' . $url_parsed ) ;
948
+ continue ;
949
+ }
950
+
951
  // to avoid multiple replacement
952
  if ( in_array( $match[ 0 ], $html_list ) ) {
953
  continue ;
includes/litespeed-cache-purge.class.php CHANGED
@@ -26,6 +26,7 @@ class LiteSpeed_Cache_Purge
26
  const TYPE_PURGE_ALL_LSCACHE = 'purge_all_lscache' ;
27
  const TYPE_PURGE_ALL_CSSJS = 'purge_all_cssjs' ;
28
  const TYPE_PURGE_ALL_CCSS = 'purge_all_ccss' ;
 
29
  const TYPE_PURGE_ALL_OBJECT = 'purge_all_object' ;
30
  const TYPE_PURGE_ALL_OPCACHE = 'purge_all_opcache' ;
31
 
@@ -88,6 +89,10 @@ class LiteSpeed_Cache_Purge
88
  $instance->_purge_all_ccss() ;
89
  break ;
90
 
 
 
 
 
91
  case self::TYPE_PURGE_ALL_OBJECT :
92
  $instance->_purge_all_object() ;
93
  break ;
@@ -141,6 +146,7 @@ class LiteSpeed_Cache_Purge
141
  $this->_purge_all_lscache( true ) ;
142
  $this->_purge_all_cssjs( true ) ;
143
  $this->_purge_all_ccss( true ) ;
 
144
  $this->_purge_all_object( true ) ;
145
  $this->_purge_all_opcache( true ) ;
146
 
@@ -198,6 +204,22 @@ class LiteSpeed_Cache_Purge
198
  }
199
  }
200
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
201
  /**
202
  * Alerts LiteSpeed Web Server to purge pages.
203
  *
26
  const TYPE_PURGE_ALL_LSCACHE = 'purge_all_lscache' ;
27
  const TYPE_PURGE_ALL_CSSJS = 'purge_all_cssjs' ;
28
  const TYPE_PURGE_ALL_CCSS = 'purge_all_ccss' ;
29
+ const TYPE_PURGE_ALL_PLACEHOLDER = 'purge_all_placeholder' ;
30
  const TYPE_PURGE_ALL_OBJECT = 'purge_all_object' ;
31
  const TYPE_PURGE_ALL_OPCACHE = 'purge_all_opcache' ;
32
 
89
  $instance->_purge_all_ccss() ;
90
  break ;
91
 
92
+ case self::TYPE_PURGE_ALL_PLACEHOLDER :
93
+ $instance->_purge_all_placeholder() ;
94
+ break ;
95
+
96
  case self::TYPE_PURGE_ALL_OBJECT :
97
  $instance->_purge_all_object() ;
98
  break ;
146
  $this->_purge_all_lscache( true ) ;
147
  $this->_purge_all_cssjs( true ) ;
148
  $this->_purge_all_ccss( true ) ;
149
+ $this->_purge_all_placeholder( true ) ;
150
  $this->_purge_all_object( true ) ;
151
  $this->_purge_all_opcache( true ) ;
152
 
204
  }
205
  }
206
 
207
+ /**
208
+ * Delete all placeholder images
209
+ *
210
+ * @since 2.5.1
211
+ * @access private
212
+ */
213
+ private function _purge_all_placeholder( $silence = false )
214
+ {
215
+ LiteSpeed_Cache_Media::get_instance()->rm_cache_folder() ;
216
+
217
+ if ( ! $silence ) {
218
+ $msg = __( 'Cleaned all placeholder files.', 'litespeed-cache' ) ;
219
+ ! defined( 'LITESPEED_PURGE_SILENT' ) && LiteSpeed_Cache_Admin_Display::succeed( $msg ) ;
220
+ }
221
+ }
222
+
223
  /**
224
  * Alerts LiteSpeed Web Server to purge pages.
225
  *
includes/litespeed-cache-task.class.php CHANGED
@@ -18,6 +18,7 @@ class LiteSpeed_Cache_Task
18
  const CRON_ACTION_HOOK_IMGOPTM = 'litespeed_imgoptm_trigger' ;
19
  const CRON_ACTION_HOOK_IMGOPTM_AUTO_REQUEST = 'litespeed_imgoptm_auto_request_trigger' ;
20
  const CRON_ACTION_HOOK_CCSS = 'litespeed_ccss_trigger' ;
 
21
  const CRON_FITLER_CRAWLER = 'litespeed_crawl_filter' ;
22
  const CRON_FITLER = 'litespeed_filter' ;
23
 
@@ -60,6 +61,13 @@ class LiteSpeed_Cache_Task
60
 
61
  add_action( self::CRON_ACTION_HOOK_CCSS, 'LiteSpeed_Cache_CSS::cron_ccss' ) ;
62
  }
 
 
 
 
 
 
 
63
  }
64
 
65
  /**
@@ -161,6 +169,23 @@ class LiteSpeed_Cache_Task
161
  }
162
  }
163
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
164
  /**
165
  * Schedule cron crawler
166
  *
18
  const CRON_ACTION_HOOK_IMGOPTM = 'litespeed_imgoptm_trigger' ;
19
  const CRON_ACTION_HOOK_IMGOPTM_AUTO_REQUEST = 'litespeed_imgoptm_auto_request_trigger' ;
20
  const CRON_ACTION_HOOK_CCSS = 'litespeed_ccss_trigger' ;
21
+ const CRON_ACTION_HOOK_IMG_PLACEHOLDER = 'litespeed_img_placeholder_trigger' ;
22
  const CRON_FITLER_CRAWLER = 'litespeed_crawl_filter' ;
23
  const CRON_FITLER = 'litespeed_filter' ;
24
 
61
 
62
  add_action( self::CRON_ACTION_HOOK_CCSS, 'LiteSpeed_Cache_CSS::cron_ccss' ) ;
63
  }
64
+
65
+ // Register image placeholder generation
66
+ if ( LiteSpeed_Cache::config( LiteSpeed_Cache_Config::OPID_MEDIA_PLACEHOLDER_RESP_ASYNC ) && LiteSpeed_Cache_Media::has_queue() ) {
67
+ self::schedule_filter_placeholder() ;
68
+
69
+ add_action( self::CRON_ACTION_HOOK_IMG_PLACEHOLDER, 'LiteSpeed_Cache_Media::cron_placeholder' ) ;
70
+ }
71
  }
72
 
73
  /**
169
  }
170
  }
171
 
172
+ /**
173
+ * Schedule cron image placeholder generation
174
+ *
175
+ * @since 2.5.1
176
+ * @access public
177
+ */
178
+ public static function schedule_filter_placeholder()
179
+ {
180
+ add_filter( 'cron_schedules', 'LiteSpeed_Cache_Task::lscache_cron_filter' ) ;
181
+
182
+ // Schedule event here to see if it can lost again or not
183
+ if( ! wp_next_scheduled( self::CRON_ACTION_HOOK_IMG_PLACEHOLDER ) ) {
184
+ LiteSpeed_Cache_Log::debug( 'Cron log: ......image placeholder cron hook register......' ) ;
185
+ wp_schedule_event( time(), self::CRON_FITLER, self::CRON_ACTION_HOOK_IMG_PLACEHOLDER ) ;
186
+ }
187
+ }
188
+
189
  /**
190
  * Schedule cron crawler
191
  *
includes/litespeed-cache.class.php CHANGED
@@ -25,7 +25,7 @@ class LiteSpeed_Cache
25
 
26
  const NAME = 'LiteSpeed Cache' ;
27
  const PLUGIN_NAME = 'litespeed-cache' ;
28
- const PLUGIN_VERSION = '2.4.4' ;
29
 
30
  const PAGE_EDIT_HTACCESS = 'lscache-edit-htaccess' ;
31
 
25
 
26
  const NAME = 'LiteSpeed Cache' ;
27
  const PLUGIN_NAME = 'litespeed-cache' ;
28
+ const PLUGIN_VERSION = '2.5.1' ;
29
 
30
  const PAGE_EDIT_HTACCESS = 'lscache-edit-htaccess' ;
31
 
languages/litespeed-cache.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the same license as the LiteSpeed Cache package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: LiteSpeed Cache 2.4.4\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/litespeed-cache\n"
7
- "POT-Creation-Date: 2018-08-31 15:56:59+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -94,6 +94,7 @@ msgstr ""
94
  #: admin/litespeed-cache-admin-display.class.php:899
95
  #: admin/tpl/setting/settings_debug.php:35
96
  #: admin/tpl/setting/settings_inc.cache_mobile.php:67
 
97
  #: admin/tpl/setting/settings_optimize.php:138
98
  #: admin/tpl/setting/settings_optimize.php:152
99
  #: admin/tpl/setting/settings_optimize.php:153
@@ -108,6 +109,7 @@ msgstr ""
108
  #: admin/tpl/setting/settings_cdn.php:35 admin/tpl/setting/settings_cdn.php:169
109
  #: admin/tpl/setting/settings_debug.php:29
110
  #: admin/tpl/setting/settings_inc.cache_object.php:149
 
111
  #: admin/tpl/setting/settings_optimize.php:152
112
  #: admin/tpl/setting/settings_optimize.php:164
113
  #: admin/tpl/setting/settings_tuning.php:18
@@ -120,7 +122,7 @@ msgid "Recommended value: %s"
120
  msgstr ""
121
 
122
  #: admin/litespeed-cache-admin-display.class.php:954
123
- #: admin/tpl/setting/settings_media.php:36
124
  #: admin/tpl/setting/settings_optimize.php:140
125
  #: admin/tpl/setting/settings_tuning.php:24
126
  #: admin/tpl/setting/settings_tuning.php:40
@@ -136,6 +138,7 @@ msgstr ""
136
 
137
  #: admin/litespeed-cache-admin-display.class.php:957
138
  #: admin/litespeed-cache-admin.class.php:229
 
139
  #: admin/tpl/inc/img_optm.initialize.php:29
140
  #: admin/tpl/inc/img_optm.summary.php:165 admin/tpl/manage/manage_cdn.php:60
141
  #: admin/tpl/setting/settings_advanced.php:10
@@ -153,9 +156,10 @@ msgstr ""
153
  #: admin/tpl/setting/settings_inc.cache_object.php:75
154
  #: admin/tpl/setting/settings_inc.cache_object.php:150
155
  #: admin/tpl/setting/settings_inc.check_adv_file.php:18
156
- #: admin/tpl/setting/settings_media.php:8
157
- #: admin/tpl/setting/settings_media.php:75
158
- #: admin/tpl/setting/settings_media.php:188
 
159
  #: admin/tpl/setting/settings_optimize.php:10
160
  #: admin/tpl/setting/settings_optimize.php:165
161
  #: admin/tpl/setting/settings_optimize.php:237
@@ -451,7 +455,7 @@ msgid "Site options saved."
451
  msgstr ""
452
 
453
  #: admin/litespeed-cache-admin-settings.class.php:357
454
- #: admin/litespeed-cache-admin-settings.class.php:1045
455
  msgid "Default Public Cache"
456
  msgstr ""
457
 
@@ -467,30 +471,30 @@ msgstr ""
467
  msgid "Feed"
468
  msgstr ""
469
 
470
- #: admin/litespeed-cache-admin-settings.class.php:883
471
  #: admin/tpl/setting/settings_debug.php:88
472
  msgid "Log File Size Limit"
473
  msgstr ""
474
 
475
- #: admin/litespeed-cache-admin-settings.class.php:968
476
  #: admin/tpl/setting/settings_crawler.php:13
477
  msgid "Delay"
478
  msgstr ""
479
 
480
- #: admin/litespeed-cache-admin-settings.class.php:969
481
  #: admin/tpl/setting/settings_crawler.php:37
482
  msgid "Run Duration"
483
  msgstr ""
484
 
485
- #: admin/litespeed-cache-admin-settings.class.php:970
486
  msgid "Cron Interval"
487
  msgstr ""
488
 
489
- #: admin/litespeed-cache-admin-settings.class.php:971
490
  msgid "Whole Interval"
491
  msgstr ""
492
 
493
- #: admin/litespeed-cache-admin-settings.class.php:972
494
  #: admin/tpl/setting/settings_crawler.php:73
495
  msgid "Threads"
496
  msgstr ""
@@ -612,11 +616,11 @@ msgstr ""
612
  msgid "Disable"
613
  msgstr ""
614
 
615
- #: admin/tpl/crawler.php:92 admin/tpl/inc/check_cache_disabled.php:31
616
  #: admin/tpl/inc/img_optm.summary.php:210 admin/tpl/manage/manage_cdn.php:15
617
  #: admin/tpl/setting/settings_debug.php:105
618
  #: admin/tpl/setting/settings_debug.php:138
619
- #: admin/tpl/setting/settings_media.php:119
620
  #: admin/tpl/setting/settings_optimize.php:15 admin/tpl/settings.php:161
621
  msgid "WARNING"
622
  msgstr ""
@@ -869,7 +873,7 @@ msgstr ""
869
  msgid "Rate %s on %s"
870
  msgstr ""
871
 
872
- #. #-#-#-#-# litespeed-cache.pot (LiteSpeed Cache 2.4.4) #-#-#-#-#
873
  #. Plugin Name of the plugin/theme
874
  #: admin/tpl/inc/admin_footer.php:6 inc/gui.class.php:353
875
  #: includes/litespeed-cache-gui.class.php:353
@@ -936,24 +940,28 @@ msgstr ""
936
  msgid "Join Us on Slack"
937
  msgstr ""
938
 
939
- #: admin/tpl/inc/check_cache_disabled.php:8
940
- msgid "The LSCache Module is disabled at the server level."
 
 
941
  msgstr ""
942
 
943
- #: admin/tpl/inc/check_cache_disabled.php:15
944
- msgid "LiteSpeed Cache is disabled in the plugin settings."
 
 
945
  msgstr ""
946
 
947
  #: admin/tpl/inc/check_cache_disabled.php:22
948
- msgid "LiteSpeed Cache is disabled."
949
  msgstr ""
950
 
951
- #: admin/tpl/inc/check_cache_disabled.php:34
952
- msgid "Caching functions on this page are currently unavailable!"
953
  msgstr ""
954
 
955
- #: admin/tpl/inc/check_cache_disabled.php:42
956
- msgid "Learn How to Fix It"
957
  msgstr ""
958
 
959
  #: admin/tpl/inc/disabled_all.php:8 admin/tpl/setting/settings_debug.php:13
@@ -1160,12 +1168,12 @@ msgid "This will delete all of the backups of the original images."
1160
  msgstr ""
1161
 
1162
  #: admin/tpl/inc/img_optm.summary.php:211
1163
- #: admin/tpl/setting/settings_media.php:120
1164
  msgid "This is irreversible."
1165
  msgstr ""
1166
 
1167
  #: admin/tpl/inc/img_optm.summary.php:212
1168
- #: admin/tpl/setting/settings_media.php:121
1169
  msgid "You will be unable to Revert Optimization once the backups are deleted!"
1170
  msgstr ""
1171
 
@@ -1562,15 +1570,17 @@ msgstr ""
1562
  #: admin/tpl/manage/manage_purge.php:39 admin/tpl/manage/manage_purge.php:45
1563
  #: admin/tpl/manage/manage_purge.php:54 admin/tpl/manage/manage_purge.php:63
1564
  #: admin/tpl/manage/manage_purge.php:72 admin/tpl/manage/manage_purge.php:81
1565
- #: inc/gui.class.php:387 inc/gui.class.php:395 inc/gui.class.php:403
1566
- #: inc/gui.class.php:412 inc/gui.class.php:422 inc/gui.class.php:432
1567
- #: inc/gui.class.php:442 includes/litespeed-cache-gui.class.php:387
 
1568
  #: includes/litespeed-cache-gui.class.php:395
1569
  #: includes/litespeed-cache-gui.class.php:403
1570
  #: includes/litespeed-cache-gui.class.php:412
1571
  #: includes/litespeed-cache-gui.class.php:422
1572
  #: includes/litespeed-cache-gui.class.php:432
1573
  #: includes/litespeed-cache-gui.class.php:442
 
1574
  msgid "Purge All"
1575
  msgstr ""
1576
 
@@ -1615,50 +1625,59 @@ msgstr ""
1615
  msgid "This will delete all generated critical CSS files"
1616
  msgstr ""
1617
 
 
 
 
 
 
1618
  #: admin/tpl/manage/manage_purge.php:82
1619
- msgid "Purge the cache entries created by this plugin"
1620
  msgstr ""
1621
 
1622
  #: admin/tpl/manage/manage_purge.php:91
 
 
 
 
1623
  msgid "Empty Entire Cache"
1624
  msgstr ""
1625
 
1626
- #: admin/tpl/manage/manage_purge.php:92
1627
  msgid ""
1628
  "Clears all cache entries related to this site, <i>including other web "
1629
  "applications</i>."
1630
  msgstr ""
1631
 
1632
- #: admin/tpl/manage/manage_purge.php:93
1633
  msgid "This action should only be used if things are cached incorrectly."
1634
  msgstr ""
1635
 
1636
- #: admin/tpl/manage/manage_purge.php:97
1637
  msgid "This will clear EVERYTHING inside the cache."
1638
  msgstr ""
1639
 
1640
- #: admin/tpl/manage/manage_purge.php:98
1641
  msgid "This may cause heavy load on the server."
1642
  msgstr ""
1643
 
1644
- #: admin/tpl/manage/manage_purge.php:99
1645
  msgid "If only the WordPress site should be purged, use purge all."
1646
  msgstr ""
1647
 
1648
- #: admin/tpl/manage/manage_purge.php:107 admin/tpl/manage.php:5
1649
  #: admin/tpl/network_settings.php:7 admin/tpl/settings.php:7
1650
  msgid "Purge"
1651
  msgstr ""
1652
 
1653
- #: admin/tpl/manage/manage_purge.php:140
1654
  msgid "Purge By..."
1655
  msgstr ""
1656
 
1657
- #: admin/tpl/manage/manage_purge.php:142
1658
  msgid "Select below for \"Purge by\" options."
1659
  msgstr ""
1660
 
1661
- #: admin/tpl/manage/manage_purge.php:143
1662
  #: admin/tpl/setting/settings_cache.php:73
1663
  #: admin/tpl/setting/settings_cache.php:90
1664
  #: admin/tpl/setting/settings_cdn.php:117
@@ -1673,8 +1692,8 @@ msgstr ""
1673
  #: admin/tpl/setting/settings_inc.cache_object.php:114
1674
  #: admin/tpl/setting/settings_inc.cache_object.php:122
1675
  #: admin/tpl/setting/settings_inc.exclude_cookies.php:19
1676
- #: admin/tpl/setting/settings_media.php:34
1677
- #: admin/tpl/setting/settings_media.php:177
1678
  #: admin/tpl/setting/settings_optimize.php:236
1679
  #: admin/tpl/setting/settings_purge.php:85
1680
  #: admin/tpl/setting/settings_tuning.php:38
@@ -1684,44 +1703,44 @@ msgstr ""
1684
  msgid "One per line."
1685
  msgstr ""
1686
 
1687
- #: admin/tpl/manage/manage_purge.php:170
1688
  msgid "Category"
1689
  msgstr ""
1690
 
1691
- #: admin/tpl/manage/manage_purge.php:176
1692
  msgid "Post ID"
1693
  msgstr ""
1694
 
1695
- #: admin/tpl/manage/manage_purge.php:182
1696
  msgid "Tag"
1697
  msgstr ""
1698
 
1699
- #: admin/tpl/manage/manage_purge.php:188
1700
  msgid "URL"
1701
  msgstr ""
1702
 
1703
- #: admin/tpl/manage/manage_purge.php:194
1704
  msgid ""
1705
  "Purge pages by category name - e.g. %2$s should be used for the URL %1$s."
1706
  msgstr ""
1707
 
1708
- #: admin/tpl/manage/manage_purge.php:199
1709
  msgid "Purge pages by post ID."
1710
  msgstr ""
1711
 
1712
- #: admin/tpl/manage/manage_purge.php:203
1713
  msgid "Purge pages by tag name - e.g. %2$s should be used for the URL %1$s."
1714
  msgstr ""
1715
 
1716
- #: admin/tpl/manage/manage_purge.php:208
1717
  msgid "Purge pages by relative or full URL."
1718
  msgstr ""
1719
 
1720
- #: admin/tpl/manage/manage_purge.php:209
1721
  msgid "e.g. Use %s or %s."
1722
  msgstr ""
1723
 
1724
- #: admin/tpl/manage/manage_purge.php:222
1725
  msgid "Purge List"
1726
  msgstr ""
1727
 
@@ -3138,40 +3157,40 @@ msgid ""
3138
  "or WordPress core is upgraded."
3139
  msgstr ""
3140
 
3141
- #: admin/tpl/setting/settings_media.php:7
3142
  msgid "Media Settings"
3143
  msgstr ""
3144
 
3145
- #: admin/tpl/setting/settings_media.php:13
3146
  msgid "Lazy Load Images"
3147
  msgstr ""
3148
 
3149
- #: admin/tpl/setting/settings_media.php:17
3150
  msgid "Load images only when they enter the viewport."
3151
  msgstr ""
3152
 
3153
- #: admin/tpl/setting/settings_media.php:18
3154
- #: admin/tpl/setting/settings_media.php:63
3155
  msgid "This can improve page loading time by reducing initial HTTP requests."
3156
  msgstr ""
3157
 
3158
- #: admin/tpl/setting/settings_media.php:20
3159
  msgid "Tip"
3160
  msgstr ""
3161
 
3162
- #: admin/tpl/setting/settings_media.php:21
3163
  msgid "Adding Style to Your Lazy-Loaded Images"
3164
  msgstr ""
3165
 
3166
- #: admin/tpl/setting/settings_media.php:28
3167
  msgid "Lazy Load Image Excludes"
3168
  msgstr ""
3169
 
3170
- #: admin/tpl/setting/settings_media.php:32
3171
  msgid "Listed images will not be lazy loaded."
3172
  msgstr ""
3173
 
3174
- #: admin/tpl/setting/settings_media.php:33
3175
  #: admin/tpl/setting/settings_tuning.php:37
3176
  #: admin/tpl/setting/settings_tuning.php:73
3177
  #: admin/tpl/setting/settings_tuning.php:145
@@ -3179,14 +3198,14 @@ msgstr ""
3179
  msgid "Both full URLs and partial strings can be used."
3180
  msgstr ""
3181
 
3182
- #: admin/tpl/setting/settings_media.php:37
3183
  #: admin/tpl/setting/settings_tuning.php:41
3184
  #: admin/tpl/setting/settings_tuning.php:77
3185
  #: admin/tpl/setting/settings_tuning.php:149
3186
  msgid "Filter %s is supported."
3187
  msgstr ""
3188
 
3189
- #: admin/tpl/setting/settings_media.php:38
3190
  #: admin/tpl/setting/settings_optimize.php:141
3191
  #: admin/tpl/setting/settings_tuning.php:42
3192
  #: admin/tpl/setting/settings_tuning.php:78
@@ -3194,47 +3213,107 @@ msgstr ""
3194
  msgid "Elements with attribute %s in html code will be excluded."
3195
  msgstr ""
3196
 
3197
- #: admin/tpl/setting/settings_media.php:45
 
3198
  msgid "Lazy Load Image Placeholder"
3199
  msgstr ""
3200
 
3201
- #: admin/tpl/setting/settings_media.php:49
3202
  msgid ""
3203
  "Specify a base64 image to be used as a placeholder while other images finish "
3204
  "loading."
3205
  msgstr ""
3206
 
3207
- #: admin/tpl/setting/settings_media.php:50
3208
  msgid ""
3209
  "This can be predefined in %2$s as well using constant %1$s, with this "
3210
  "setting taking priority."
3211
  msgstr ""
3212
 
3213
- #: admin/tpl/setting/settings_media.php:51
3214
  msgid "By default a gray image placeholder %s will be used."
3215
  msgstr ""
3216
 
3217
- #: admin/tpl/setting/settings_media.php:52
3218
  msgid "For example, %s can be used for a transparent placeholder."
3219
  msgstr ""
3220
 
3221
- #: admin/tpl/setting/settings_media.php:58
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3222
  msgid "Lazy Load Iframes"
3223
  msgstr ""
3224
 
3225
- #: admin/tpl/setting/settings_media.php:62
3226
  msgid "Load iframes only when they enter the viewport."
3227
  msgstr ""
3228
 
3229
- #: admin/tpl/setting/settings_media.php:69
3230
  msgid "Inline Lazy Load Images Library"
3231
  msgstr ""
3232
 
3233
- #: admin/tpl/setting/settings_media.php:73
3234
  msgid "Include the lazy load image Javascript library inline."
3235
  msgstr ""
3236
 
3237
- #: admin/tpl/setting/settings_media.php:74
3238
  #: admin/tpl/setting/settings_optimize.php:137
3239
  #: admin/tpl/setting/settings_optimize.php:210
3240
  #: admin/tpl/setting/settings_optimize.php:248
@@ -3245,102 +3324,102 @@ msgid ""
3245
  "PageSpeed."
3246
  msgstr ""
3247
 
3248
- #: admin/tpl/setting/settings_media.php:81
3249
  msgid "Optimize Automatically"
3250
  msgstr ""
3251
 
3252
- #: admin/tpl/setting/settings_media.php:85
3253
  msgid "Automatically request optimization via cron job."
3254
  msgstr ""
3255
 
3256
- #: admin/tpl/setting/settings_media.php:86
3257
  msgid "Requests can only be sent when recovered credits is %s or more."
3258
  msgstr ""
3259
 
3260
- #: admin/tpl/setting/settings_media.php:92
3261
  msgid "Optimization Cron"
3262
  msgstr ""
3263
 
3264
- #: admin/tpl/setting/settings_media.php:96
3265
  msgid ""
3266
  "Disabling this will stop the cron job responsible for fetching optimized "
3267
  "images from LiteSpeed's Image Server."
3268
  msgstr ""
3269
 
3270
- #: admin/tpl/setting/settings_media.php:102
3271
  msgid "Optimize Original Images"
3272
  msgstr ""
3273
 
3274
- #: admin/tpl/setting/settings_media.php:106
3275
  msgid "Optimize images and save backups of the originals in the same folder."
3276
  msgstr ""
3277
 
3278
- #: admin/tpl/setting/settings_media.php:112
3279
  msgid "Remove Original Backups"
3280
  msgstr ""
3281
 
3282
- #: admin/tpl/setting/settings_media.php:116
3283
  msgid ""
3284
  "Automatically remove the original image backups after fetching optimized "
3285
  "images."
3286
  msgstr ""
3287
 
3288
- #: admin/tpl/setting/settings_media.php:128
3289
  msgid "Optimize WebP Versions"
3290
  msgstr ""
3291
 
3292
- #: admin/tpl/setting/settings_media.php:132
3293
  msgid "Request WebP versions of original images when doing optimization."
3294
  msgstr ""
3295
 
3296
- #: admin/tpl/setting/settings_media.php:138
3297
  msgid "Optimize Losslessly"
3298
  msgstr ""
3299
 
3300
- #: admin/tpl/setting/settings_media.php:142
3301
  msgid "Optimize images using lossless compression."
3302
  msgstr ""
3303
 
3304
- #: admin/tpl/setting/settings_media.php:143
3305
  msgid ""
3306
  "This can improve quality but may result in larger images than lossy "
3307
  "compression will."
3308
  msgstr ""
3309
 
3310
- #: admin/tpl/setting/settings_media.php:149
3311
  msgid "Preserve EXIF data"
3312
  msgstr ""
3313
 
3314
- #: admin/tpl/setting/settings_media.php:153
3315
  msgid ""
3316
  "Preserve EXIF data (copyright, GPS, comments, keywords, etc) when optimizing."
3317
  msgstr ""
3318
 
3319
- #: admin/tpl/setting/settings_media.php:154
3320
  msgid "This will increase the size of optimized files."
3321
  msgstr ""
3322
 
3323
- #: admin/tpl/setting/settings_media.php:168
3324
  msgid "WebP Attribute To Replace"
3325
  msgstr ""
3326
 
3327
- #: admin/tpl/setting/settings_media.php:174
3328
  msgid "Specify which element attributes will be replaced with WebP."
3329
  msgstr ""
3330
 
3331
- #: admin/tpl/setting/settings_media.php:175
3332
  msgid "Only attributes listed here will be replaced."
3333
  msgstr ""
3334
 
3335
- #: admin/tpl/setting/settings_media.php:176
3336
  msgid "Use the format %1$s or %2$s (element is optional)."
3337
  msgstr ""
3338
 
3339
- #: admin/tpl/setting/settings_media.php:183
3340
  msgid "WebP For Extra srcset"
3341
  msgstr ""
3342
 
3343
- #: admin/tpl/setting/settings_media.php:187
3344
  msgid ""
3345
  "Enable replacement of WebP in %s elements that were generated outside of "
3346
  "WordPress logic."
@@ -3492,15 +3571,6 @@ msgid ""
3492
  "Automatically generate critical CSS in the background via a cron-based queue."
3493
  msgstr ""
3494
 
3495
- #: admin/tpl/setting/settings_optimize.php:164
3496
- msgid ""
3497
- "If set to %s this is done in the foreground, which may slow down page load."
3498
- msgstr ""
3499
-
3500
- #: admin/tpl/setting/settings_optimize.php:172
3501
- msgid "Last generated"
3502
- msgstr ""
3503
-
3504
  #: admin/tpl/setting/settings_optimize.php:175
3505
  msgid "Last requested cost"
3506
  msgstr ""
@@ -3509,10 +3579,6 @@ msgstr ""
3509
  msgid "URL list in queue waiting for cron"
3510
  msgstr ""
3511
 
3512
- #: admin/tpl/setting/settings_optimize.php:186
3513
- msgid "Run Queue Manually"
3514
- msgstr ""
3515
-
3516
  #: admin/tpl/setting/settings_optimize.php:195
3517
  msgid "Inline CSS Async Lib"
3518
  msgstr ""
@@ -3990,33 +4056,33 @@ msgstr ""
3990
  msgid "LSCache"
3991
  msgstr ""
3992
 
3993
- #: inc/gui.class.php:460 includes/litespeed-cache-gui.class.php:460
3994
  msgid "Remove all previous unfinished image optimization requests."
3995
  msgstr ""
3996
 
3997
- #: inc/gui.class.php:461 includes/litespeed-cache-gui.class.php:461
3998
  msgid "Clean Up Unfinished Data"
3999
  msgstr ""
4000
 
4001
- #: inc/gui.class.php:480 includes/litespeed-cache-gui.class.php:480
4002
  msgid "Install %s"
4003
  msgstr ""
4004
 
4005
- #: inc/gui.class.php:481 includes/litespeed-cache-gui.class.php:481
4006
  msgid "Install Now"
4007
  msgstr ""
4008
 
4009
- #: inc/gui.class.php:501 includes/litespeed-cache-gui.class.php:501
4010
  msgid ""
4011
  "<a href=\"%1$s\" %2$s>View version %3$s details</a> or <a href=\"%4$s\" %5$s "
4012
  "target=\"_blank\">update now</a>."
4013
  msgstr ""
4014
 
4015
- #: inc/gui.class.php:504 includes/litespeed-cache-gui.class.php:504
4016
  msgid "View %1$s version %2$s details"
4017
  msgstr ""
4018
 
4019
- #: inc/gui.class.php:509 includes/litespeed-cache-gui.class.php:509
4020
  msgid "Update %s now"
4021
  msgstr ""
4022
 
@@ -4066,31 +4132,31 @@ msgid ""
4066
  "accepted %3$s groups with %4$s images."
4067
  msgstr ""
4068
 
4069
- #: inc/img_optm.class.php:1735
4070
  msgid "Removed %1$s images and saved %2$s successfully."
4071
  msgstr ""
4072
 
4073
- #: inc/img_optm.class.php:1929
4074
  msgid "Switched images successfully."
4075
  msgstr ""
4076
 
4077
- #: inc/img_optm.class.php:1960
4078
  msgid "Disabled WebP file successfully."
4079
  msgstr ""
4080
 
4081
- #: inc/img_optm.class.php:1966
4082
  msgid "Enabled WebP file successfully."
4083
  msgstr ""
4084
 
4085
- #: inc/img_optm.class.php:1982
4086
  msgid "Restored original file successfully."
4087
  msgstr ""
4088
 
4089
- #: inc/img_optm.class.php:1989
4090
  msgid "Switched to optimized file successfully."
4091
  msgstr ""
4092
 
4093
- #: inc/img_optm.class.php:2049
4094
  msgid "Reset the optimized data successfully."
4095
  msgstr ""
4096
 
@@ -4114,103 +4180,107 @@ msgstr ""
4114
  msgid "Notified LiteSpeed Web Server to purge the list."
4115
  msgstr ""
4116
 
4117
- #: inc/media.class.php:132
4118
  msgid "LiteSpeed Optimization"
4119
  msgstr ""
4120
 
4121
- #: inc/media.class.php:158
4122
  msgid "WebP saved %s"
4123
  msgstr ""
4124
 
4125
- #: inc/media.class.php:165
4126
  msgid "Click to Disable WebP"
4127
  msgstr ""
4128
 
4129
- #: inc/media.class.php:170
4130
  msgid "Click to Enable WebP"
4131
  msgstr ""
4132
 
4133
- #: inc/media.class.php:191
4134
  msgid "Original saved %s"
4135
  msgstr ""
4136
 
4137
- #: inc/media.class.php:202
4138
  msgid "Click to Restore Original File"
4139
  msgstr ""
4140
 
4141
- #: inc/media.class.php:207
4142
  msgid "Click to Switch To Optimized File"
4143
  msgstr ""
4144
 
4145
- #: inc/media.class.php:226
4146
  msgid "Reset"
4147
  msgstr ""
4148
 
4149
- #: inc/purge.class.php:157 includes/litespeed-cache-purge.class.php:157
4150
  msgid "Purged all caches successfully."
4151
  msgstr ""
4152
 
4153
- #: inc/purge.class.php:180 includes/litespeed-cache-purge.class.php:180
4154
  msgid "Notified LiteSpeed Web Server to purge all LSCache entries."
4155
  msgstr ""
4156
 
4157
- #: inc/purge.class.php:196 includes/litespeed-cache-purge.class.php:196
4158
  msgid "Cleaned all critical CSS files."
4159
  msgstr ""
4160
 
4161
- #: inc/purge.class.php:217 includes/litespeed-cache-purge.class.php:217
 
 
 
 
4162
  msgid "Notified LiteSpeed Web Server to purge CSS/JS entries."
4163
  msgstr ""
4164
 
4165
- #: inc/purge.class.php:234 includes/litespeed-cache-purge.class.php:234
4166
  msgid "Opcode cache is not enabled."
4167
  msgstr ""
4168
 
4169
- #: inc/purge.class.php:246 includes/litespeed-cache-purge.class.php:246
4170
  msgid "Reset the entire opcode cache successfully."
4171
  msgstr ""
4172
 
4173
- #: inc/purge.class.php:265 includes/litespeed-cache-purge.class.php:265
4174
  msgid "Object cache is not enabled."
4175
  msgstr ""
4176
 
4177
- #: inc/purge.class.php:275 includes/litespeed-cache-purge.class.php:275
4178
  msgid "Purge all object caches successfully."
4179
  msgstr ""
4180
 
4181
- #: inc/purge.class.php:427 includes/litespeed-cache-purge.class.php:427
4182
  msgid "Notified LiteSpeed Web Server to purge the front page."
4183
  msgstr ""
4184
 
4185
- #: inc/purge.class.php:441 includes/litespeed-cache-purge.class.php:441
4186
  msgid "Notified LiteSpeed Web Server to purge pages."
4187
  msgstr ""
4188
 
4189
- #: inc/purge.class.php:461 includes/litespeed-cache-purge.class.php:461
4190
  msgid "Notified LiteSpeed Web Server to purge error pages."
4191
  msgstr ""
4192
 
4193
- #: inc/purge.class.php:489 includes/litespeed-cache-purge.class.php:489
4194
  msgid "Purge category %s"
4195
  msgstr ""
4196
 
4197
- #: inc/purge.class.php:516 includes/litespeed-cache-purge.class.php:516
4198
  msgid "Purge Post ID %s"
4199
  msgstr ""
4200
 
4201
- #: inc/purge.class.php:545 includes/litespeed-cache-purge.class.php:545
4202
  msgid "Purge tag %s"
4203
  msgstr ""
4204
 
4205
- #: inc/purge.class.php:579 includes/litespeed-cache-purge.class.php:579
4206
  msgid "Purge url %s"
4207
  msgstr ""
4208
 
4209
- #: inc/task.class.php:193 includes/litespeed-cache-task.class.php:193
4210
  msgid "LiteSpeed Cache Custom Cron Common"
4211
  msgstr ""
4212
 
4213
- #: inc/task.class.php:214 includes/litespeed-cache-task.class.php:214
4214
  msgid "LiteSpeed Cache Custom Cron Crawler"
4215
  msgstr ""
4216
 
2
  # This file is distributed under the same license as the LiteSpeed Cache package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: LiteSpeed Cache 2.5.1\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/litespeed-cache\n"
7
+ "POT-Creation-Date: 2018-09-11 17:24:06+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
94
  #: admin/litespeed-cache-admin-display.class.php:899
95
  #: admin/tpl/setting/settings_debug.php:35
96
  #: admin/tpl/setting/settings_inc.cache_mobile.php:67
97
+ #: admin/tpl/setting/settings_media.php:90
98
  #: admin/tpl/setting/settings_optimize.php:138
99
  #: admin/tpl/setting/settings_optimize.php:152
100
  #: admin/tpl/setting/settings_optimize.php:153
109
  #: admin/tpl/setting/settings_cdn.php:35 admin/tpl/setting/settings_cdn.php:169
110
  #: admin/tpl/setting/settings_debug.php:29
111
  #: admin/tpl/setting/settings_inc.cache_object.php:149
112
+ #: admin/tpl/setting/settings_media.php:93
113
  #: admin/tpl/setting/settings_optimize.php:152
114
  #: admin/tpl/setting/settings_optimize.php:164
115
  #: admin/tpl/setting/settings_tuning.php:18
122
  msgstr ""
123
 
124
  #: admin/litespeed-cache-admin-display.class.php:954
125
+ #: admin/tpl/setting/settings_media.php:38
126
  #: admin/tpl/setting/settings_optimize.php:140
127
  #: admin/tpl/setting/settings_tuning.php:24
128
  #: admin/tpl/setting/settings_tuning.php:40
138
 
139
  #: admin/litespeed-cache-admin-display.class.php:957
140
  #: admin/litespeed-cache-admin.class.php:229
141
+ #: admin/tpl/inc/check_cache_disabled.php:49
142
  #: admin/tpl/inc/img_optm.initialize.php:29
143
  #: admin/tpl/inc/img_optm.summary.php:165 admin/tpl/manage/manage_cdn.php:60
144
  #: admin/tpl/setting/settings_advanced.php:10
156
  #: admin/tpl/setting/settings_inc.cache_object.php:75
157
  #: admin/tpl/setting/settings_inc.cache_object.php:150
158
  #: admin/tpl/setting/settings_inc.check_adv_file.php:18
159
+ #: admin/tpl/setting/settings_media.php:10
160
+ #: admin/tpl/setting/settings_media.php:94
161
+ #: admin/tpl/setting/settings_media.php:138
162
+ #: admin/tpl/setting/settings_media.php:251
163
  #: admin/tpl/setting/settings_optimize.php:10
164
  #: admin/tpl/setting/settings_optimize.php:165
165
  #: admin/tpl/setting/settings_optimize.php:237
455
  msgstr ""
456
 
457
  #: admin/litespeed-cache-admin-settings.class.php:357
458
+ #: admin/litespeed-cache-admin-settings.class.php:1052
459
  msgid "Default Public Cache"
460
  msgstr ""
461
 
471
  msgid "Feed"
472
  msgstr ""
473
 
474
+ #: admin/litespeed-cache-admin-settings.class.php:890
475
  #: admin/tpl/setting/settings_debug.php:88
476
  msgid "Log File Size Limit"
477
  msgstr ""
478
 
479
+ #: admin/litespeed-cache-admin-settings.class.php:975
480
  #: admin/tpl/setting/settings_crawler.php:13
481
  msgid "Delay"
482
  msgstr ""
483
 
484
+ #: admin/litespeed-cache-admin-settings.class.php:976
485
  #: admin/tpl/setting/settings_crawler.php:37
486
  msgid "Run Duration"
487
  msgstr ""
488
 
489
+ #: admin/litespeed-cache-admin-settings.class.php:977
490
  msgid "Cron Interval"
491
  msgstr ""
492
 
493
+ #: admin/litespeed-cache-admin-settings.class.php:978
494
  msgid "Whole Interval"
495
  msgstr ""
496
 
497
+ #: admin/litespeed-cache-admin-settings.class.php:979
498
  #: admin/tpl/setting/settings_crawler.php:73
499
  msgid "Threads"
500
  msgstr ""
616
  msgid "Disable"
617
  msgstr ""
618
 
619
+ #: admin/tpl/crawler.php:92 admin/tpl/inc/check_cache_disabled.php:38
620
  #: admin/tpl/inc/img_optm.summary.php:210 admin/tpl/manage/manage_cdn.php:15
621
  #: admin/tpl/setting/settings_debug.php:105
622
  #: admin/tpl/setting/settings_debug.php:138
623
+ #: admin/tpl/setting/settings_media.php:182
624
  #: admin/tpl/setting/settings_optimize.php:15 admin/tpl/settings.php:161
625
  msgid "WARNING"
626
  msgstr ""
873
  msgid "Rate %s on %s"
874
  msgstr ""
875
 
876
+ #. #-#-#-#-# litespeed-cache.pot (LiteSpeed Cache 2.5.1) #-#-#-#-#
877
  #. Plugin Name of the plugin/theme
878
  #: admin/tpl/inc/admin_footer.php:6 inc/gui.class.php:353
879
  #: includes/litespeed-cache-gui.class.php:353
940
  msgid "Join Us on Slack"
941
  msgstr ""
942
 
943
+ #: admin/tpl/inc/check_cache_disabled.php:9
944
+ msgid ""
945
+ "Caching with a non-LiteSpeed server (i.e. Apache or nginx) is not currently "
946
+ "supported."
947
  msgstr ""
948
 
949
+ #: admin/tpl/inc/check_cache_disabled.php:14
950
+ msgid ""
951
+ "Please enable the LSCache Module at the server level, or ask your hosting "
952
+ "provider."
953
  msgstr ""
954
 
955
  #: admin/tpl/inc/check_cache_disabled.php:22
956
+ msgid "Please enable LiteSpeed Cache in the plugin settings."
957
  msgstr ""
958
 
959
+ #: admin/tpl/inc/check_cache_disabled.php:29
960
+ msgid "LiteSpeed Cache is disabled."
961
  msgstr ""
962
 
963
+ #: admin/tpl/inc/check_cache_disabled.php:41
964
+ msgid "Caching functions on this page are currently unavailable!"
965
  msgstr ""
966
 
967
  #: admin/tpl/inc/disabled_all.php:8 admin/tpl/setting/settings_debug.php:13
1168
  msgstr ""
1169
 
1170
  #: admin/tpl/inc/img_optm.summary.php:211
1171
+ #: admin/tpl/setting/settings_media.php:183
1172
  msgid "This is irreversible."
1173
  msgstr ""
1174
 
1175
  #: admin/tpl/inc/img_optm.summary.php:212
1176
+ #: admin/tpl/setting/settings_media.php:184
1177
  msgid "You will be unable to Revert Optimization once the backups are deleted!"
1178
  msgstr ""
1179
 
1570
  #: admin/tpl/manage/manage_purge.php:39 admin/tpl/manage/manage_purge.php:45
1571
  #: admin/tpl/manage/manage_purge.php:54 admin/tpl/manage/manage_purge.php:63
1572
  #: admin/tpl/manage/manage_purge.php:72 admin/tpl/manage/manage_purge.php:81
1573
+ #: admin/tpl/manage/manage_purge.php:90 inc/gui.class.php:387
1574
+ #: inc/gui.class.php:395 inc/gui.class.php:403 inc/gui.class.php:412
1575
+ #: inc/gui.class.php:422 inc/gui.class.php:432 inc/gui.class.php:442
1576
+ #: inc/gui.class.php:452 includes/litespeed-cache-gui.class.php:387
1577
  #: includes/litespeed-cache-gui.class.php:395
1578
  #: includes/litespeed-cache-gui.class.php:403
1579
  #: includes/litespeed-cache-gui.class.php:412
1580
  #: includes/litespeed-cache-gui.class.php:422
1581
  #: includes/litespeed-cache-gui.class.php:432
1582
  #: includes/litespeed-cache-gui.class.php:442
1583
+ #: includes/litespeed-cache-gui.class.php:452
1584
  msgid "Purge All"
1585
  msgstr ""
1586
 
1625
  msgid "This will delete all generated critical CSS files"
1626
  msgstr ""
1627
 
1628
+ #: admin/tpl/manage/manage_purge.php:81 inc/gui.class.php:452
1629
+ #: includes/litespeed-cache-gui.class.php:452
1630
+ msgid "Placeholder Cache"
1631
+ msgstr ""
1632
+
1633
  #: admin/tpl/manage/manage_purge.php:82
1634
+ msgid "This will delete all generated image placeholder files"
1635
  msgstr ""
1636
 
1637
  #: admin/tpl/manage/manage_purge.php:91
1638
+ msgid "Purge the cache entries created by this plugin"
1639
+ msgstr ""
1640
+
1641
+ #: admin/tpl/manage/manage_purge.php:100
1642
  msgid "Empty Entire Cache"
1643
  msgstr ""
1644
 
1645
+ #: admin/tpl/manage/manage_purge.php:101
1646
  msgid ""
1647
  "Clears all cache entries related to this site, <i>including other web "
1648
  "applications</i>."
1649
  msgstr ""
1650
 
1651
+ #: admin/tpl/manage/manage_purge.php:102
1652
  msgid "This action should only be used if things are cached incorrectly."
1653
  msgstr ""
1654
 
1655
+ #: admin/tpl/manage/manage_purge.php:106
1656
  msgid "This will clear EVERYTHING inside the cache."
1657
  msgstr ""
1658
 
1659
+ #: admin/tpl/manage/manage_purge.php:107
1660
  msgid "This may cause heavy load on the server."
1661
  msgstr ""
1662
 
1663
+ #: admin/tpl/manage/manage_purge.php:108
1664
  msgid "If only the WordPress site should be purged, use purge all."
1665
  msgstr ""
1666
 
1667
+ #: admin/tpl/manage/manage_purge.php:116 admin/tpl/manage.php:5
1668
  #: admin/tpl/network_settings.php:7 admin/tpl/settings.php:7
1669
  msgid "Purge"
1670
  msgstr ""
1671
 
1672
+ #: admin/tpl/manage/manage_purge.php:149
1673
  msgid "Purge By..."
1674
  msgstr ""
1675
 
1676
+ #: admin/tpl/manage/manage_purge.php:151
1677
  msgid "Select below for \"Purge by\" options."
1678
  msgstr ""
1679
 
1680
+ #: admin/tpl/manage/manage_purge.php:152
1681
  #: admin/tpl/setting/settings_cache.php:73
1682
  #: admin/tpl/setting/settings_cache.php:90
1683
  #: admin/tpl/setting/settings_cdn.php:117
1692
  #: admin/tpl/setting/settings_inc.cache_object.php:114
1693
  #: admin/tpl/setting/settings_inc.cache_object.php:122
1694
  #: admin/tpl/setting/settings_inc.exclude_cookies.php:19
1695
+ #: admin/tpl/setting/settings_media.php:36
1696
+ #: admin/tpl/setting/settings_media.php:240
1697
  #: admin/tpl/setting/settings_optimize.php:236
1698
  #: admin/tpl/setting/settings_purge.php:85
1699
  #: admin/tpl/setting/settings_tuning.php:38
1703
  msgid "One per line."
1704
  msgstr ""
1705
 
1706
+ #: admin/tpl/manage/manage_purge.php:179
1707
  msgid "Category"
1708
  msgstr ""
1709
 
1710
+ #: admin/tpl/manage/manage_purge.php:185
1711
  msgid "Post ID"
1712
  msgstr ""
1713
 
1714
+ #: admin/tpl/manage/manage_purge.php:191
1715
  msgid "Tag"
1716
  msgstr ""
1717
 
1718
+ #: admin/tpl/manage/manage_purge.php:197
1719
  msgid "URL"
1720
  msgstr ""
1721
 
1722
+ #: admin/tpl/manage/manage_purge.php:203
1723
  msgid ""
1724
  "Purge pages by category name - e.g. %2$s should be used for the URL %1$s."
1725
  msgstr ""
1726
 
1727
+ #: admin/tpl/manage/manage_purge.php:208
1728
  msgid "Purge pages by post ID."
1729
  msgstr ""
1730
 
1731
+ #: admin/tpl/manage/manage_purge.php:212
1732
  msgid "Purge pages by tag name - e.g. %2$s should be used for the URL %1$s."
1733
  msgstr ""
1734
 
1735
+ #: admin/tpl/manage/manage_purge.php:217
1736
  msgid "Purge pages by relative or full URL."
1737
  msgstr ""
1738
 
1739
+ #: admin/tpl/manage/manage_purge.php:218
1740
  msgid "e.g. Use %s or %s."
1741
  msgstr ""
1742
 
1743
+ #: admin/tpl/manage/manage_purge.php:231
1744
  msgid "Purge List"
1745
  msgstr ""
1746
 
3157
  "or WordPress core is upgraded."
3158
  msgstr ""
3159
 
3160
+ #: admin/tpl/setting/settings_media.php:9
3161
  msgid "Media Settings"
3162
  msgstr ""
3163
 
3164
+ #: admin/tpl/setting/settings_media.php:15
3165
  msgid "Lazy Load Images"
3166
  msgstr ""
3167
 
3168
+ #: admin/tpl/setting/settings_media.php:19
3169
  msgid "Load images only when they enter the viewport."
3170
  msgstr ""
3171
 
3172
+ #: admin/tpl/setting/settings_media.php:20
3173
+ #: admin/tpl/setting/settings_media.php:126
3174
  msgid "This can improve page loading time by reducing initial HTTP requests."
3175
  msgstr ""
3176
 
3177
+ #: admin/tpl/setting/settings_media.php:22
3178
  msgid "Tip"
3179
  msgstr ""
3180
 
3181
+ #: admin/tpl/setting/settings_media.php:23
3182
  msgid "Adding Style to Your Lazy-Loaded Images"
3183
  msgstr ""
3184
 
3185
+ #: admin/tpl/setting/settings_media.php:30
3186
  msgid "Lazy Load Image Excludes"
3187
  msgstr ""
3188
 
3189
+ #: admin/tpl/setting/settings_media.php:34
3190
  msgid "Listed images will not be lazy loaded."
3191
  msgstr ""
3192
 
3193
+ #: admin/tpl/setting/settings_media.php:35
3194
  #: admin/tpl/setting/settings_tuning.php:37
3195
  #: admin/tpl/setting/settings_tuning.php:73
3196
  #: admin/tpl/setting/settings_tuning.php:145
3198
  msgid "Both full URLs and partial strings can be used."
3199
  msgstr ""
3200
 
3201
+ #: admin/tpl/setting/settings_media.php:39
3202
  #: admin/tpl/setting/settings_tuning.php:41
3203
  #: admin/tpl/setting/settings_tuning.php:77
3204
  #: admin/tpl/setting/settings_tuning.php:149
3205
  msgid "Filter %s is supported."
3206
  msgstr ""
3207
 
3208
+ #: admin/tpl/setting/settings_media.php:40
3209
  #: admin/tpl/setting/settings_optimize.php:141
3210
  #: admin/tpl/setting/settings_tuning.php:42
3211
  #: admin/tpl/setting/settings_tuning.php:78
3213
  msgid "Elements with attribute %s in html code will be excluded."
3214
  msgstr ""
3215
 
3216
+ #: admin/tpl/setting/settings_media.php:47
3217
+ #: admin/tpl/setting/settings_media.php:91
3218
  msgid "Lazy Load Image Placeholder"
3219
  msgstr ""
3220
 
3221
+ #: admin/tpl/setting/settings_media.php:51
3222
  msgid ""
3223
  "Specify a base64 image to be used as a placeholder while other images finish "
3224
  "loading."
3225
  msgstr ""
3226
 
3227
+ #: admin/tpl/setting/settings_media.php:52
3228
  msgid ""
3229
  "This can be predefined in %2$s as well using constant %1$s, with this "
3230
  "setting taking priority."
3231
  msgstr ""
3232
 
3233
+ #: admin/tpl/setting/settings_media.php:53
3234
  msgid "By default a gray image placeholder %s will be used."
3235
  msgstr ""
3236
 
3237
+ #: admin/tpl/setting/settings_media.php:54
3238
  msgid "For example, %s can be used for a transparent placeholder."
3239
  msgstr ""
3240
 
3241
+ #: admin/tpl/setting/settings_media.php:60
3242
+ #: admin/tpl/setting/settings_media.php:87
3243
+ msgid "Responsive Placeholder"
3244
+ msgstr ""
3245
+
3246
+ #: admin/tpl/setting/settings_media.php:64
3247
+ msgid ""
3248
+ "Responsive image placeholders can help to reduce layout reshuffle when "
3249
+ "images are loaded."
3250
+ msgstr ""
3251
+
3252
+ #: admin/tpl/setting/settings_media.php:65
3253
+ msgid ""
3254
+ "This will generate the placeholder with same dimensions as the image if it "
3255
+ "has the width and height attributes."
3256
+ msgstr ""
3257
+
3258
+ #: admin/tpl/setting/settings_media.php:71
3259
+ msgid "Responsive Placeholder Background Color"
3260
+ msgstr ""
3261
+
3262
+ #: admin/tpl/setting/settings_media.php:76
3263
+ msgid "Specify the placeholder color you want to use."
3264
+ msgstr ""
3265
+
3266
+ #: admin/tpl/setting/settings_media.php:83
3267
+ msgid "Generate Reponsive Placeholder In Background"
3268
+ msgstr ""
3269
+
3270
+ #: admin/tpl/setting/settings_media.php:87
3271
+ msgid "Automatically generate %s in the background via a cron-based queue."
3272
+ msgstr ""
3273
+
3274
+ #: admin/tpl/setting/settings_media.php:89
3275
+ msgid ""
3276
+ "If set to %1$s, before the placeholder is localized, the %2$s configuration "
3277
+ "will be used."
3278
+ msgstr ""
3279
+
3280
+ #: admin/tpl/setting/settings_media.php:93
3281
+ #: admin/tpl/setting/settings_optimize.php:164
3282
+ msgid ""
3283
+ "If set to %s this is done in the foreground, which may slow down page load."
3284
+ msgstr ""
3285
+
3286
+ #: admin/tpl/setting/settings_media.php:101
3287
+ #: admin/tpl/setting/settings_optimize.php:172
3288
+ msgid "Last generated"
3289
+ msgstr ""
3290
+
3291
+ #: admin/tpl/setting/settings_media.php:106
3292
+ msgid "Size list in queue waiting for cron"
3293
+ msgstr ""
3294
+
3295
+ #: admin/tpl/setting/settings_media.php:112
3296
+ #: admin/tpl/setting/settings_optimize.php:186
3297
+ msgid "Run Queue Manually"
3298
+ msgstr ""
3299
+
3300
+ #: admin/tpl/setting/settings_media.php:121
3301
  msgid "Lazy Load Iframes"
3302
  msgstr ""
3303
 
3304
+ #: admin/tpl/setting/settings_media.php:125
3305
  msgid "Load iframes only when they enter the viewport."
3306
  msgstr ""
3307
 
3308
+ #: admin/tpl/setting/settings_media.php:132
3309
  msgid "Inline Lazy Load Images Library"
3310
  msgstr ""
3311
 
3312
+ #: admin/tpl/setting/settings_media.php:136
3313
  msgid "Include the lazy load image Javascript library inline."
3314
  msgstr ""
3315
 
3316
+ #: admin/tpl/setting/settings_media.php:137
3317
  #: admin/tpl/setting/settings_optimize.php:137
3318
  #: admin/tpl/setting/settings_optimize.php:210
3319
  #: admin/tpl/setting/settings_optimize.php:248
3324
  "PageSpeed."
3325
  msgstr ""
3326
 
3327
+ #: admin/tpl/setting/settings_media.php:144
3328
  msgid "Optimize Automatically"
3329
  msgstr ""
3330
 
3331
+ #: admin/tpl/setting/settings_media.php:148
3332
  msgid "Automatically request optimization via cron job."
3333
  msgstr ""
3334
 
3335
+ #: admin/tpl/setting/settings_media.php:149
3336
  msgid "Requests can only be sent when recovered credits is %s or more."
3337
  msgstr ""
3338
 
3339
+ #: admin/tpl/setting/settings_media.php:155
3340
  msgid "Optimization Cron"
3341
  msgstr ""
3342
 
3343
+ #: admin/tpl/setting/settings_media.php:159
3344
  msgid ""
3345
  "Disabling this will stop the cron job responsible for fetching optimized "
3346
  "images from LiteSpeed's Image Server."
3347
  msgstr ""
3348
 
3349
+ #: admin/tpl/setting/settings_media.php:165
3350
  msgid "Optimize Original Images"
3351
  msgstr ""
3352
 
3353
+ #: admin/tpl/setting/settings_media.php:169
3354
  msgid "Optimize images and save backups of the originals in the same folder."
3355
  msgstr ""
3356
 
3357
+ #: admin/tpl/setting/settings_media.php:175
3358
  msgid "Remove Original Backups"
3359
  msgstr ""
3360
 
3361
+ #: admin/tpl/setting/settings_media.php:179
3362
  msgid ""
3363
  "Automatically remove the original image backups after fetching optimized "
3364
  "images."
3365
  msgstr ""
3366
 
3367
+ #: admin/tpl/setting/settings_media.php:191
3368
  msgid "Optimize WebP Versions"
3369
  msgstr ""
3370
 
3371
+ #: admin/tpl/setting/settings_media.php:195
3372
  msgid "Request WebP versions of original images when doing optimization."
3373
  msgstr ""
3374
 
3375
+ #: admin/tpl/setting/settings_media.php:201
3376
  msgid "Optimize Losslessly"
3377
  msgstr ""
3378
 
3379
+ #: admin/tpl/setting/settings_media.php:205
3380
  msgid "Optimize images using lossless compression."
3381
  msgstr ""
3382
 
3383
+ #: admin/tpl/setting/settings_media.php:206
3384
  msgid ""
3385
  "This can improve quality but may result in larger images than lossy "
3386
  "compression will."
3387
  msgstr ""
3388
 
3389
+ #: admin/tpl/setting/settings_media.php:212
3390
  msgid "Preserve EXIF data"
3391
  msgstr ""
3392
 
3393
+ #: admin/tpl/setting/settings_media.php:216
3394
  msgid ""
3395
  "Preserve EXIF data (copyright, GPS, comments, keywords, etc) when optimizing."
3396
  msgstr ""
3397
 
3398
+ #: admin/tpl/setting/settings_media.php:217
3399
  msgid "This will increase the size of optimized files."
3400
  msgstr ""
3401
 
3402
+ #: admin/tpl/setting/settings_media.php:231
3403
  msgid "WebP Attribute To Replace"
3404
  msgstr ""
3405
 
3406
+ #: admin/tpl/setting/settings_media.php:237
3407
  msgid "Specify which element attributes will be replaced with WebP."
3408
  msgstr ""
3409
 
3410
+ #: admin/tpl/setting/settings_media.php:238
3411
  msgid "Only attributes listed here will be replaced."
3412
  msgstr ""
3413
 
3414
+ #: admin/tpl/setting/settings_media.php:239
3415
  msgid "Use the format %1$s or %2$s (element is optional)."
3416
  msgstr ""
3417
 
3418
+ #: admin/tpl/setting/settings_media.php:246
3419
  msgid "WebP For Extra srcset"
3420
  msgstr ""
3421
 
3422
+ #: admin/tpl/setting/settings_media.php:250
3423
  msgid ""
3424
  "Enable replacement of WebP in %s elements that were generated outside of "
3425
  "WordPress logic."
3571
  "Automatically generate critical CSS in the background via a cron-based queue."
3572
  msgstr ""
3573
 
 
 
 
 
 
 
 
 
 
3574
  #: admin/tpl/setting/settings_optimize.php:175
3575
  msgid "Last requested cost"
3576
  msgstr ""
3579
  msgid "URL list in queue waiting for cron"
3580
  msgstr ""
3581
 
 
 
 
 
3582
  #: admin/tpl/setting/settings_optimize.php:195
3583
  msgid "Inline CSS Async Lib"
3584
  msgstr ""
4056
  msgid "LSCache"
4057
  msgstr ""
4058
 
4059
+ #: inc/gui.class.php:470 includes/litespeed-cache-gui.class.php:470
4060
  msgid "Remove all previous unfinished image optimization requests."
4061
  msgstr ""
4062
 
4063
+ #: inc/gui.class.php:471 includes/litespeed-cache-gui.class.php:471
4064
  msgid "Clean Up Unfinished Data"
4065
  msgstr ""
4066
 
4067
+ #: inc/gui.class.php:490 includes/litespeed-cache-gui.class.php:490
4068
  msgid "Install %s"
4069
  msgstr ""
4070
 
4071
+ #: inc/gui.class.php:491 includes/litespeed-cache-gui.class.php:491
4072
  msgid "Install Now"
4073
  msgstr ""
4074
 
4075
+ #: inc/gui.class.php:511 includes/litespeed-cache-gui.class.php:511
4076
  msgid ""
4077
  "<a href=\"%1$s\" %2$s>View version %3$s details</a> or <a href=\"%4$s\" %5$s "
4078
  "target=\"_blank\">update now</a>."
4079
  msgstr ""
4080
 
4081
+ #: inc/gui.class.php:514 includes/litespeed-cache-gui.class.php:514
4082
  msgid "View %1$s version %2$s details"
4083
  msgstr ""
4084
 
4085
+ #: inc/gui.class.php:519 includes/litespeed-cache-gui.class.php:519
4086
  msgid "Update %s now"
4087
  msgstr ""
4088
 
4132
  "accepted %3$s groups with %4$s images."
4133
  msgstr ""
4134
 
4135
+ #: inc/img_optm.class.php:1746
4136
  msgid "Removed %1$s images and saved %2$s successfully."
4137
  msgstr ""
4138
 
4139
+ #: inc/img_optm.class.php:1941
4140
  msgid "Switched images successfully."
4141
  msgstr ""
4142
 
4143
+ #: inc/img_optm.class.php:1972
4144
  msgid "Disabled WebP file successfully."
4145
  msgstr ""
4146
 
4147
+ #: inc/img_optm.class.php:1978
4148
  msgid "Enabled WebP file successfully."
4149
  msgstr ""
4150
 
4151
+ #: inc/img_optm.class.php:1994
4152
  msgid "Restored original file successfully."
4153
  msgstr ""
4154
 
4155
+ #: inc/img_optm.class.php:2001
4156
  msgid "Switched to optimized file successfully."
4157
  msgstr ""
4158
 
4159
+ #: inc/img_optm.class.php:2061
4160
  msgid "Reset the optimized data successfully."
4161
  msgstr ""
4162
 
4180
  msgid "Notified LiteSpeed Web Server to purge the list."
4181
  msgstr ""
4182
 
4183
+ #: inc/media.class.php:149
4184
  msgid "LiteSpeed Optimization"
4185
  msgstr ""
4186
 
4187
+ #: inc/media.class.php:175
4188
  msgid "WebP saved %s"
4189
  msgstr ""
4190
 
4191
+ #: inc/media.class.php:182
4192
  msgid "Click to Disable WebP"
4193
  msgstr ""
4194
 
4195
+ #: inc/media.class.php:187
4196
  msgid "Click to Enable WebP"
4197
  msgstr ""
4198
 
4199
+ #: inc/media.class.php:208
4200
  msgid "Original saved %s"
4201
  msgstr ""
4202
 
4203
+ #: inc/media.class.php:219
4204
  msgid "Click to Restore Original File"
4205
  msgstr ""
4206
 
4207
+ #: inc/media.class.php:224
4208
  msgid "Click to Switch To Optimized File"
4209
  msgstr ""
4210
 
4211
+ #: inc/media.class.php:243
4212
  msgid "Reset"
4213
  msgstr ""
4214
 
4215
+ #: inc/purge.class.php:163 includes/litespeed-cache-purge.class.php:163
4216
  msgid "Purged all caches successfully."
4217
  msgstr ""
4218
 
4219
+ #: inc/purge.class.php:186 includes/litespeed-cache-purge.class.php:186
4220
  msgid "Notified LiteSpeed Web Server to purge all LSCache entries."
4221
  msgstr ""
4222
 
4223
+ #: inc/purge.class.php:202 includes/litespeed-cache-purge.class.php:202
4224
  msgid "Cleaned all critical CSS files."
4225
  msgstr ""
4226
 
4227
+ #: inc/purge.class.php:218 includes/litespeed-cache-purge.class.php:218
4228
+ msgid "Cleaned all placeholder files."
4229
+ msgstr ""
4230
+
4231
+ #: inc/purge.class.php:239 includes/litespeed-cache-purge.class.php:239
4232
  msgid "Notified LiteSpeed Web Server to purge CSS/JS entries."
4233
  msgstr ""
4234
 
4235
+ #: inc/purge.class.php:256 includes/litespeed-cache-purge.class.php:256
4236
  msgid "Opcode cache is not enabled."
4237
  msgstr ""
4238
 
4239
+ #: inc/purge.class.php:268 includes/litespeed-cache-purge.class.php:268
4240
  msgid "Reset the entire opcode cache successfully."
4241
  msgstr ""
4242
 
4243
+ #: inc/purge.class.php:287 includes/litespeed-cache-purge.class.php:287
4244
  msgid "Object cache is not enabled."
4245
  msgstr ""
4246
 
4247
+ #: inc/purge.class.php:297 includes/litespeed-cache-purge.class.php:297
4248
  msgid "Purge all object caches successfully."
4249
  msgstr ""
4250
 
4251
+ #: inc/purge.class.php:449 includes/litespeed-cache-purge.class.php:449
4252
  msgid "Notified LiteSpeed Web Server to purge the front page."
4253
  msgstr ""
4254
 
4255
+ #: inc/purge.class.php:463 includes/litespeed-cache-purge.class.php:463
4256
  msgid "Notified LiteSpeed Web Server to purge pages."
4257
  msgstr ""
4258
 
4259
+ #: inc/purge.class.php:483 includes/litespeed-cache-purge.class.php:483
4260
  msgid "Notified LiteSpeed Web Server to purge error pages."
4261
  msgstr ""
4262
 
4263
+ #: inc/purge.class.php:511 includes/litespeed-cache-purge.class.php:511
4264
  msgid "Purge category %s"
4265
  msgstr ""
4266
 
4267
+ #: inc/purge.class.php:538 includes/litespeed-cache-purge.class.php:538
4268
  msgid "Purge Post ID %s"
4269
  msgstr ""
4270
 
4271
+ #: inc/purge.class.php:567 includes/litespeed-cache-purge.class.php:567
4272
  msgid "Purge tag %s"
4273
  msgstr ""
4274
 
4275
+ #: inc/purge.class.php:601 includes/litespeed-cache-purge.class.php:601
4276
  msgid "Purge url %s"
4277
  msgstr ""
4278
 
4279
+ #: inc/task.class.php:218 includes/litespeed-cache-task.class.php:218
4280
  msgid "LiteSpeed Cache Custom Cron Common"
4281
  msgstr ""
4282
 
4283
+ #: inc/task.class.php:239 includes/litespeed-cache-task.class.php:239
4284
  msgid "LiteSpeed Cache Custom Cron Crawler"
4285
  msgstr ""
4286
 
litespeed-cache.php CHANGED
@@ -15,7 +15,7 @@
15
  * Plugin Name: LiteSpeed Cache
16
  * Plugin URI: https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration
17
  * Description: High-performance page caching and site optimization from LiteSpeed
18
- * Version: 2.4.4
19
  * Author: LiteSpeed Technologies
20
  * Author URI: https://www.litespeedtech.com
21
  * License: GPLv3
15
  * Plugin Name: LiteSpeed Cache
16
  * Plugin URI: https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration
17
  * Description: High-performance page caching and site optimization from LiteSpeed
18
+ * Version: 2.5.1
19
  * Author: LiteSpeed Technologies
20
  * Author URI: https://www.litespeedtech.com
21
  * License: GPLv3
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: LiteSpeedTech
3
  Tags: caching, optimize, performance, pagespeed, seo, speed, image optimize, compress, object cache, redis, memcached, database cleaner
4
  Requires at least: 4.0
5
  Tested up to: 4.9.8
6
- Stable tag: 2.4.4
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl.html
9
 
@@ -267,8 +267,19 @@ Click on the `Advanced View` link at the top of the page, and several more tabs
267
 
268
  == Changelog ==
269
 
 
 
 
 
 
 
 
 
 
 
 
270
  = 2.4.4 - Aug 31 2018 =
271
- * [NEW] <strong>CLI</strong> CLI can now support image optimization. (@Shon)
272
  * [IMPROVEMENT] <strong>GUI</strong> Cron/CLI will not create admin message anymore.
273
  * [UPDATE] <strong>Media</strong> Fixed a PHP notice that appeared when pulling optimized images.
274
  * [UPDATE] Fixed a PHP notice when detecting origin of ajax call. (@iosoft)
3
  Tags: caching, optimize, performance, pagespeed, seo, speed, image optimize, compress, object cache, redis, memcached, database cleaner
4
  Requires at least: 4.0
5
  Tested up to: 4.9.8
6
+ Stable tag: 2.5.1
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl.html
9
 
267
 
268
  == Changelog ==
269
 
270
+ = 2.5.1 - Sep 11 2018 =
271
+ * 🆕 Responsive placeholder. (@szmigieldesign)
272
+ * Changed CSS::ccss_realpath function scope to private.
273
+ * <strong>BUGFIX</strong> Detected JS filetype before optimizing to avoid PHP source conflict. (@closte #50)
274
+
275
+ = 2.5 - Sep 6 2018 =
276
+ * [IMPROVEMENT] <strong>CLI</strong> can now execute Remove Original Image Backups. (@Shon)
277
+ * [UPDATE] Fixed issue where WP-PostViews documentation contained extra slashes. (#545638)
278
+ * [UPDATE] Check LITESPEED_SERVER_TYPE for more accurate LSCache Disabled messaging.
279
+ * [IAPI] Fixed a bug where optimize/fetch error notification was not being received. (@LucasRolff)
280
+
281
  = 2.4.4 - Aug 31 2018 =
282
+ * [NEW] <strong>CLI</strong> can now support image optimization. (@Shon)
283
  * [IMPROVEMENT] <strong>GUI</strong> Cron/CLI will not create admin message anymore.
284
  * [UPDATE] <strong>Media</strong> Fixed a PHP notice that appeared when pulling optimized images.
285
  * [UPDATE] Fixed a PHP notice when detecting origin of ajax call. (@iosoft)