Version Description
- Mar 14 2019 =
- Auto convert default WordPress nonce to ESI to avoid expiration.
- API: Ability to easily convert custom nonce to ESI by registering
LiteSpeed_Cache_API::nonce_action
. -
OPTM: Tweaked redundant attr
data-no-optimize
in func_analyse_links
todata-ignore-optimize
to offer the API to bypass optimization but still move src to top of source code. -
API: Renamed default nonce ESI ID from
lscwp_nonce_esi
tononce
. - API: Added WebP generation & validation hook API. (@alim #wp-stateless)
- API: Added hook to bypass vary commenter check. (#wpdiscuz)
- Doc: Clarified Cache Mobile description. (@JohnnyNguyen)
- Doc: Replaced incorrect link in description. (@JohnnyNguyen)
- 3rd: Improved wpDiscuz compatibility.
- 3rd: Fixed Divi Theme Builder comment compatibility on non-builder pages. (#410919)
- 3rd: Added YITH ESI adjustment.
Download this release
Release Info
Developer | hailite |
Plugin | LiteSpeed Cache |
Version | 2.9.5 |
Comparing to | |
See all releases |
Code changes from version 2.9.4.1 to 2.9.5
- admin/tpl/debug_log.php +13 -1
- admin/tpl/setting/settings_debug.php +1 -1
- admin/tpl/setting/settings_inc.cache_mobile.php +2 -2
- inc/activation.class.php +3 -3
- inc/api.class.php +12 -1
- inc/esi.class.php +87 -6
- inc/img_optm.class.php +13 -0
- inc/litespeed-cache.class.php +9 -4
- inc/log.class.php +76 -1
- inc/media.class.php +8 -2
- inc/optimize.class.php +2 -2
- inc/rest.cls.php +0 -0
- inc/vary.class.php +21 -15
- includes/litespeed-cache-activation.class.php +3 -3
- includes/litespeed-cache-api.class.php +12 -1
- includes/litespeed-cache-esi.class.php +87 -6
- includes/litespeed-cache-log.class.php +76 -1
- includes/litespeed-cache-optimize.class.php +2 -2
- includes/litespeed-cache-vary.class.php +21 -15
- includes/litespeed-cache.class.php +9 -4
- languages/litespeed-cache.pot +31 -25
- litespeed-cache.php +1 -1
- readme.txt +16 -2
- thirdparty/lscwp-3rd-divi-theme-builder.cls.php +1 -0
- thirdparty/lscwp-3rd-wpdiscuz.cls.php +40 -0
- thirdparty/lscwp-3rd-wpml.cls.php +0 -0
- thirdparty/lscwp-3rd-yith-wishlist.cls.php +1 -2
- thirdparty/lscwp-registry-3rd.php +1 -0
admin/tpl/debug_log.php
CHANGED
@@ -1,7 +1,6 @@
|
|
1 |
<?php
|
2 |
if ( ! defined( 'WPINC' ) ) die ;
|
3 |
|
4 |
-
|
5 |
?>
|
6 |
|
7 |
<div class="wrap">
|
@@ -13,7 +12,20 @@ if ( ! defined( 'WPINC' ) ) die ;
|
|
13 |
</span>
|
14 |
<hr class="wp-header-end">
|
15 |
</div>
|
|
|
16 |
<div class="wrap">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
<?php
|
18 |
|
19 |
$file = LSCWP_CONTENT_DIR . '/debug.log' ;
|
1 |
<?php
|
2 |
if ( ! defined( 'WPINC' ) ) die ;
|
3 |
|
|
|
4 |
?>
|
5 |
|
6 |
<div class="wrap">
|
12 |
</span>
|
13 |
<hr class="wp-header-end">
|
14 |
</div>
|
15 |
+
|
16 |
<div class="wrap">
|
17 |
+
<form method="post" action="admin.php?page=lscache-debug">
|
18 |
+
<?php $this->form_action( LiteSpeed_Cache::ACTION_LOG, LiteSpeed_Cache_Log::TYPE_BETA_TEST ) ; ?>
|
19 |
+
|
20 |
+
<h3 class="litespeed-title"><?php echo __( 'Try GitHub Version', 'litespeed-cache' ) ; ?></h3>
|
21 |
+
|
22 |
+
<input type="text" name="<?php echo LiteSpeed_Cache_Log::BETA_TEST_URL; ?>" class="litespeed-input-long">
|
23 |
+
|
24 |
+
<div class="litespeed-desc">Example: https://github.com/litespeedtech/lscache_wp/commit/253715525b1708c25f73460635f7eaf152448821</div>
|
25 |
+
|
26 |
+
<button type="submit" class="litespeed-btn-primary"><?php echo __('Upgrade', 'litespeed-cache'); ?></button>
|
27 |
+
</form>
|
28 |
+
|
29 |
<?php
|
30 |
|
31 |
$file = LSCWP_CONTENT_DIR . '/debug.log' ;
|
admin/tpl/setting/settings_debug.php
CHANGED
@@ -59,7 +59,7 @@ if ( ! defined( 'WPINC' ) ) die ;
|
|
59 |
<?php echo __( 'Your IP', 'litespeed-cache' ) ; ?>: <code><?php echo LiteSpeed_Cache_Router::get_ip() ; ?></code>
|
60 |
<br />
|
61 |
<?php $this->learn_more(
|
62 |
-
'
|
63 |
__( 'More information about the available commands can be found here.', 'litespeed-cache' )
|
64 |
) ; ?>
|
65 |
</div>
|
59 |
<?php echo __( 'Your IP', 'litespeed-cache' ) ; ?>: <code><?php echo LiteSpeed_Cache_Router::get_ip() ; ?></code>
|
60 |
<br />
|
61 |
<?php $this->learn_more(
|
62 |
+
'https://www.litespeedtech.com/support/wiki/doku.php/litespeed_wiki:cache:lscwp:information:admin-ip-commands',
|
63 |
__( 'More information about the available commands can be found here.', 'litespeed-cache' )
|
64 |
) ; ?>
|
65 |
</div>
|
admin/tpl/setting/settings_inc.cache_mobile.php
CHANGED
@@ -11,8 +11,8 @@ if (!defined('WPINC')) die;
|
|
11 |
$this->build_switch(LiteSpeed_Cache_Config::OPID_CACHE_MOBILE);
|
12 |
?>
|
13 |
<div class="litespeed-desc">
|
14 |
-
<?php echo __('
|
15 |
-
<?php echo __('
|
16 |
<br /><font class="litespeed-warning">
|
17 |
⚠️
|
18 |
<?php echo __( 'This setting will edit the .htaccess file.', 'litespeed-cache' ) ; ?>
|
11 |
$this->build_switch(LiteSpeed_Cache_Config::OPID_CACHE_MOBILE);
|
12 |
?>
|
13 |
<div class="litespeed-desc">
|
14 |
+
<?php echo __('Cache mobile views separately.', 'litespeed-cache'); ?>
|
15 |
+
<?php echo __('Only enable for AMP or mobile-specific design/content, not for responsive sites.', 'litespeed-cache'); ?>
|
16 |
<br /><font class="litespeed-warning">
|
17 |
⚠️
|
18 |
<?php echo __( 'This setting will edit the .htaccess file.', 'litespeed-cache' ) ; ?>
|
inc/activation.class.php
CHANGED
@@ -333,9 +333,9 @@ class LiteSpeed_Cache_Activation
|
|
333 |
* Upgrade LSCWP
|
334 |
*
|
335 |
* @since 2.9
|
336 |
-
* @access
|
337 |
*/
|
338 |
-
|
339 |
{
|
340 |
$plugin = LiteSpeed_Cache::PLUGIN_FILE ;
|
341 |
|
@@ -382,7 +382,7 @@ class LiteSpeed_Cache_Activation
|
|
382 |
|
383 |
switch ( $type ) {
|
384 |
case self::TYPE_UPGRADE :
|
385 |
-
$instance->
|
386 |
break ;
|
387 |
|
388 |
default:
|
333 |
* Upgrade LSCWP
|
334 |
*
|
335 |
* @since 2.9
|
336 |
+
* @access public
|
337 |
*/
|
338 |
+
public function upgrade()
|
339 |
{
|
340 |
$plugin = LiteSpeed_Cache::PLUGIN_FILE ;
|
341 |
|
382 |
|
383 |
switch ( $type ) {
|
384 |
case self::TYPE_UPGRADE :
|
385 |
+
$instance->upgrade() ;
|
386 |
break ;
|
387 |
|
388 |
default:
|
inc/api.class.php
CHANGED
@@ -530,6 +530,7 @@ class LiteSpeed_Cache_API extends LiteSpeed_Cache_Const
|
|
530 |
* Easiest way to replace WP nonce to an ESI widget
|
531 |
*
|
532 |
* @since 2.6
|
|
|
533 |
* @access public
|
534 |
*/
|
535 |
public static function nonce( $action = -1, $defence_for_html_filter = true )
|
@@ -539,7 +540,17 @@ class LiteSpeed_Cache_API extends LiteSpeed_Cache_Const
|
|
539 |
}
|
540 |
|
541 |
// Replace it to ESI
|
542 |
-
return self::esi_url( '
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
543 |
}
|
544 |
|
545 |
/**
|
530 |
* Easiest way to replace WP nonce to an ESI widget
|
531 |
*
|
532 |
* @since 2.6
|
533 |
+
* @deprecated 2.9.5 Dropped-in wp_create_nonce replacement
|
534 |
* @access public
|
535 |
*/
|
536 |
public static function nonce( $action = -1, $defence_for_html_filter = true )
|
540 |
}
|
541 |
|
542 |
// Replace it to ESI
|
543 |
+
return self::esi_url( 'nonce', 'LSCWP Nonce ESI ' . $action, array( 'action' => $action ), '', true, $defence_for_html_filter, true ) ;
|
544 |
+
}
|
545 |
+
|
546 |
+
/**
|
547 |
+
* Append an action to nonce to convert it to ESI
|
548 |
+
*
|
549 |
+
* @since 2.9.5
|
550 |
+
*/
|
551 |
+
public static function nonce_action( $action )
|
552 |
+
{
|
553 |
+
LiteSpeed_Cache_ESI::get_instance()->nonce_action( $action ) ;
|
554 |
}
|
555 |
|
556 |
/**
|
inc/esi.class.php
CHANGED
@@ -22,6 +22,7 @@ class LiteSpeed_Cache_ESI
|
|
22 |
private static $has_esi = false ;
|
23 |
private $esi_args = null ;
|
24 |
private $_esi_preserve_list = array() ;
|
|
|
25 |
|
26 |
const QS_ACTION = 'lsesi' ;
|
27 |
const QS_PARAMS = 'esi' ;
|
@@ -48,7 +49,7 @@ class LiteSpeed_Cache_ESI
|
|
48 |
add_action( 'wp_update_comment_count', 'LiteSpeed_Cache_Purge::purge_comment_widget' ) ;
|
49 |
|
50 |
// This defination is along with LiteSpeed_Cache_API::nonce() func
|
51 |
-
! defined( 'LSCWP_NONCE' ) && define( 'LSCWP_NONCE', true )
|
52 |
|
53 |
/**
|
54 |
* Recover REQUEST_URI
|
@@ -74,6 +75,81 @@ class LiteSpeed_Cache_ESI
|
|
74 |
if ( ! is_admin() ) {
|
75 |
add_shortcode( 'esi', array( $this, 'shortcode' ) ) ;
|
76 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
}
|
78 |
|
79 |
/**
|
@@ -162,7 +238,7 @@ class LiteSpeed_Cache_ESI
|
|
162 |
add_action('litespeed_cache_load_esi_block-admin-bar', array($this, 'load_admin_bar_block')) ;
|
163 |
add_action('litespeed_cache_load_esi_block-comment-form', array($this, 'load_comment_form_block')) ;
|
164 |
|
165 |
-
add_action('litespeed_cache_load_esi_block-
|
166 |
add_action('litespeed_cache_load_esi_block-esi', array( $this, 'load_esi_shortcode' ) ) ;
|
167 |
}
|
168 |
|
@@ -294,7 +370,7 @@ class LiteSpeed_Cache_ESI
|
|
294 |
$output = "<!-- lscwp $wrapper -->$output<!-- lscwp $wrapper esi end -->" ;
|
295 |
}
|
296 |
|
297 |
-
LiteSpeed_Cache_Log::debug( "ESI
|
298 |
LiteSpeed_Cache_Log::debug2( $output ) ;
|
299 |
|
300 |
self::set_has_esi() ;
|
@@ -350,11 +426,11 @@ class LiteSpeed_Cache_ESI
|
|
350 |
$params = $this->_parse_esi_param() ;
|
351 |
|
352 |
if ( defined( 'LSCWP_LOG' ) ) {
|
353 |
-
$logInfo = '
|
354 |
if( ! empty( $params[ self::PARAM_NAME ] ) ) {
|
355 |
$logInfo .= ' Name: ' . $params[ self::PARAM_NAME ] . ' ----- ' ;
|
356 |
}
|
357 |
-
$logInfo .=
|
358 |
LiteSpeed_Cache_Log::debug( $logInfo ) ;
|
359 |
}
|
360 |
|
@@ -621,7 +697,12 @@ class LiteSpeed_Cache_ESI
|
|
621 |
LiteSpeed_Cache_Control::set_private() ;
|
622 |
}
|
623 |
|
624 |
-
|
|
|
|
|
|
|
|
|
|
|
625 |
}
|
626 |
|
627 |
/**
|
22 |
private static $has_esi = false ;
|
23 |
private $esi_args = null ;
|
24 |
private $_esi_preserve_list = array() ;
|
25 |
+
private $_nonce_actions = array( -1 ) ;
|
26 |
|
27 |
const QS_ACTION = 'lsesi' ;
|
28 |
const QS_PARAMS = 'esi' ;
|
49 |
add_action( 'wp_update_comment_count', 'LiteSpeed_Cache_Purge::purge_comment_widget' ) ;
|
50 |
|
51 |
// This defination is along with LiteSpeed_Cache_API::nonce() func
|
52 |
+
! defined( 'LSCWP_NONCE' ) && define( 'LSCWP_NONCE', true ) ;//Used in Bloom
|
53 |
|
54 |
/**
|
55 |
* Recover REQUEST_URI
|
75 |
if ( ! is_admin() ) {
|
76 |
add_shortcode( 'esi', array( $this, 'shortcode' ) ) ;
|
77 |
}
|
78 |
+
|
79 |
+
/**
|
80 |
+
* Overwrite wp_create_nonce func
|
81 |
+
* @since 2.9.5
|
82 |
+
*/
|
83 |
+
if ( ! is_admin() && ! function_exists( 'wp_create_nonce' ) ) {
|
84 |
+
$this->_transform_nonce() ;
|
85 |
+
}
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* Take over all nonce calls and transform to ESI
|
90 |
+
*
|
91 |
+
* @since 2.9.5
|
92 |
+
*/
|
93 |
+
private function _transform_nonce()
|
94 |
+
{
|
95 |
+
LiteSpeed_Cache_Log::debug( '[ESI] Overwrite wp_create_nonce()' ) ;
|
96 |
+
/**
|
97 |
+
* If the nonce is in none_actions filter, convert it to ESI
|
98 |
+
*/
|
99 |
+
function wp_create_nonce( $action = -1 ) {
|
100 |
+
if ( LiteSpeed_Cache_ESI::get_instance()->is_nonce_action( $action ) ) {
|
101 |
+
$params = array(
|
102 |
+
'action' => $action,
|
103 |
+
) ;
|
104 |
+
return LiteSpeed_Cache_ESI::sub_esi_block( 'nonce', 'wp_create_nonce ' . $action, $params, '', true, true ) ;
|
105 |
+
}
|
106 |
+
|
107 |
+
return wp_create_nonce_litespeed_esi( $action ) ;
|
108 |
+
|
109 |
+
}
|
110 |
+
|
111 |
+
/**
|
112 |
+
* Ori WP wp_create_nonce
|
113 |
+
*/
|
114 |
+
function wp_create_nonce_litespeed_esi( $action = -1 ) {
|
115 |
+
$user = wp_get_current_user();
|
116 |
+
$uid = (int) $user->ID;
|
117 |
+
if ( ! $uid ) {
|
118 |
+
/** This filter is documented in wp-includes/pluggable.php */
|
119 |
+
$uid = apply_filters( 'nonce_user_logged_out', $uid, $action );
|
120 |
+
}
|
121 |
+
|
122 |
+
$token = wp_get_session_token();
|
123 |
+
$i = wp_nonce_tick();
|
124 |
+
|
125 |
+
return substr( wp_hash( $i . '|' . $action . '|' . $uid . '|' . $token, 'nonce' ), -12, 10 );
|
126 |
+
}
|
127 |
+
}
|
128 |
+
|
129 |
+
/**
|
130 |
+
* Register a new nonce action to convert it to ESI
|
131 |
+
*
|
132 |
+
* @since 2.9.5
|
133 |
+
*/
|
134 |
+
public function nonce_action( $action )
|
135 |
+
{
|
136 |
+
if ( in_array( $action, $this->_nonce_actions ) ) {
|
137 |
+
return ;
|
138 |
+
}
|
139 |
+
|
140 |
+
LiteSpeed_Cache_Log::debug( '[ESI] Append nonce action to nonce list [action] ' . $action ) ;
|
141 |
+
|
142 |
+
$this->_nonce_actions[] = $action ;
|
143 |
+
}
|
144 |
+
|
145 |
+
/**
|
146 |
+
* Check if an action is registered to replace ESI
|
147 |
+
*
|
148 |
+
* @since 2.9.5
|
149 |
+
*/
|
150 |
+
public function is_nonce_action( $action )
|
151 |
+
{
|
152 |
+
return in_array( $action, $this->_nonce_actions ) ;
|
153 |
}
|
154 |
|
155 |
/**
|
238 |
add_action('litespeed_cache_load_esi_block-admin-bar', array($this, 'load_admin_bar_block')) ;
|
239 |
add_action('litespeed_cache_load_esi_block-comment-form', array($this, 'load_comment_form_block')) ;
|
240 |
|
241 |
+
add_action('litespeed_cache_load_esi_block-nonce', array( $this, 'load_nonce_block' ) ) ;
|
242 |
add_action('litespeed_cache_load_esi_block-esi', array( $this, 'load_esi_shortcode' ) ) ;
|
243 |
}
|
244 |
|
370 |
$output = "<!-- lscwp $wrapper -->$output<!-- lscwp $wrapper esi end -->" ;
|
371 |
}
|
372 |
|
373 |
+
LiteSpeed_Cache_Log::debug( "[ESI] 💕 [BLock_ID] $block_id \t[wrapper] $wrapper \t\t[Control] $control" ) ;
|
374 |
LiteSpeed_Cache_Log::debug2( $output ) ;
|
375 |
|
376 |
self::set_has_esi() ;
|
426 |
$params = $this->_parse_esi_param() ;
|
427 |
|
428 |
if ( defined( 'LSCWP_LOG' ) ) {
|
429 |
+
$logInfo = '[ESI] ⭕ ' ;
|
430 |
if( ! empty( $params[ self::PARAM_NAME ] ) ) {
|
431 |
$logInfo .= ' Name: ' . $params[ self::PARAM_NAME ] . ' ----- ' ;
|
432 |
}
|
433 |
+
$logInfo .= ' [ID] ' . LSCACHE_IS_ESI ;
|
434 |
LiteSpeed_Cache_Log::debug( $logInfo ) ;
|
435 |
}
|
436 |
|
697 |
LiteSpeed_Cache_Control::set_private() ;
|
698 |
}
|
699 |
|
700 |
+
if ( function_exists( 'wp_create_nonce_litespeed_esi' ) ) {
|
701 |
+
echo wp_create_nonce_litespeed_esi( $action ) ;
|
702 |
+
}
|
703 |
+
else {
|
704 |
+
echo wp_create_nonce( $action ) ;
|
705 |
+
}
|
706 |
}
|
707 |
|
708 |
/**
|
inc/img_optm.class.php
CHANGED
@@ -1082,6 +1082,12 @@ class LiteSpeed_Cache_Img_Optm
|
|
1082 |
|
1083 |
LiteSpeed_Cache_Log::debug( '[Img_Optm] Pulled optimized img: ' . $local_file ) ;
|
1084 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1085 |
$target_size = filesize( $local_file ) ;
|
1086 |
|
1087 |
$total_pulled_ori ++ ;
|
@@ -1117,6 +1123,13 @@ class LiteSpeed_Cache_Img_Optm
|
|
1117 |
|
1118 |
LiteSpeed_Cache_Log::debug( '[Img_Optm] Pulled optimized img WebP: ' . $local_file . '.webp' ) ;
|
1119 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1120 |
$webp_size = filesize( $local_file . '.webp' ) ;
|
1121 |
|
1122 |
$total_pulled_webp ++ ;
|
1082 |
|
1083 |
LiteSpeed_Cache_Log::debug( '[Img_Optm] Pulled optimized img: ' . $local_file ) ;
|
1084 |
|
1085 |
+
/**
|
1086 |
+
* API Hook
|
1087 |
+
* @since 2.9.5
|
1088 |
+
*/
|
1089 |
+
do_action( 'litespeed_img_pull_ori', $row_img, $local_file ) ;
|
1090 |
+
|
1091 |
$target_size = filesize( $local_file ) ;
|
1092 |
|
1093 |
$total_pulled_ori ++ ;
|
1123 |
|
1124 |
LiteSpeed_Cache_Log::debug( '[Img_Optm] Pulled optimized img WebP: ' . $local_file . '.webp' ) ;
|
1125 |
|
1126 |
+
/**
|
1127 |
+
* API for WebP
|
1128 |
+
* @since 2.9.5
|
1129 |
+
* @see #751737 - API docs for WEBP generation
|
1130 |
+
*/
|
1131 |
+
do_action( 'litespeed_img_pull_webp', $row_img, $local_file . '.webp' ) ;
|
1132 |
+
|
1133 |
$webp_size = filesize( $local_file . '.webp' ) ;
|
1134 |
|
1135 |
$total_pulled_webp ++ ;
|
inc/litespeed-cache.class.php
CHANGED
@@ -26,7 +26,7 @@ class LiteSpeed_Cache
|
|
26 |
const NAME = 'LiteSpeed Cache' ;
|
27 |
const PLUGIN_NAME = 'litespeed-cache' ;
|
28 |
const PLUGIN_FILE = 'litespeed-cache/litespeed-cache.php' ;
|
29 |
-
const PLUGIN_VERSION = '2.9.
|
30 |
|
31 |
const PAGE_EDIT_HTACCESS = 'lscache-edit-htaccess' ;
|
32 |
|
@@ -573,9 +573,14 @@ class LiteSpeed_Cache
|
|
573 |
* @since 2.9.4 ESI req could be from internal REST call, so moved json_encode out of this cond
|
574 |
*/
|
575 |
if ( defined( 'LSCACHE_IS_ESI' ) ) {
|
576 |
-
LiteSpeed_Cache_Log::debug( '[Core] ESI
|
577 |
-
|
578 |
-
|
|
|
|
|
|
|
|
|
|
|
579 |
}
|
580 |
|
581 |
if ( apply_filters( 'litespeed_is_json', false ) ) {
|
26 |
const NAME = 'LiteSpeed Cache' ;
|
27 |
const PLUGIN_NAME = 'litespeed-cache' ;
|
28 |
const PLUGIN_FILE = 'litespeed-cache/litespeed-cache.php' ;
|
29 |
+
const PLUGIN_VERSION = '2.9.5' ;
|
30 |
|
31 |
const PAGE_EDIT_HTACCESS = 'lscache-edit-htaccess' ;
|
32 |
|
573 |
* @since 2.9.4 ESI req could be from internal REST call, so moved json_encode out of this cond
|
574 |
*/
|
575 |
if ( defined( 'LSCACHE_IS_ESI' ) ) {
|
576 |
+
LiteSpeed_Cache_Log::debug( '[Core] ESI Start 👇' ) ;
|
577 |
+
if ( strlen( $buffer ) > 100 ) {
|
578 |
+
LiteSpeed_Cache_Log::debug( trim( substr( $buffer, 0, 100 ) ) . '.....' ) ;
|
579 |
+
}
|
580 |
+
else {
|
581 |
+
LiteSpeed_Cache_Log::debug( $buffer ) ;
|
582 |
+
}
|
583 |
+
LiteSpeed_Cache_Log::debug( '[Core] ESI End 👆' ) ;
|
584 |
}
|
585 |
|
586 |
if ( apply_filters( 'litespeed_is_json', false ) ) {
|
inc/log.class.php
CHANGED
@@ -25,6 +25,9 @@ class LiteSpeed_Cache_Log
|
|
25 |
private static $_ignore_part_filters ;
|
26 |
|
27 |
const TYPE_CLEAR_LOG = 'clear_log' ;
|
|
|
|
|
|
|
28 |
|
29 |
/**
|
30 |
* Log class Constructor
|
@@ -49,6 +52,74 @@ class LiteSpeed_Cache_Log
|
|
49 |
|
50 |
}
|
51 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
/**
|
53 |
* Log Purge headers separately
|
54 |
*
|
@@ -148,7 +219,7 @@ class LiteSpeed_Cache_Log
|
|
148 |
$server['SERVER_PROTOCOL'] .= ' (HTTPS) ' ;
|
149 |
}
|
150 |
|
151 |
-
$param = sprintf( '------%s %s %s', $server['REQUEST_METHOD'], $server['SERVER_PROTOCOL'], strtok( $server['REQUEST_URI'], '?' ) ) ;
|
152 |
|
153 |
$qs = ! empty( $server['QUERY_STRING'] ) ? $server['QUERY_STRING'] : '' ;
|
154 |
if ( LiteSpeed_Cache::config( LiteSpeed_Cache_Config::OPID_COLLAPS_QS ) ) {
|
@@ -396,6 +467,10 @@ class LiteSpeed_Cache_Log
|
|
396 |
$instance->_clear_log() ;
|
397 |
break ;
|
398 |
|
|
|
|
|
|
|
|
|
399 |
default:
|
400 |
break ;
|
401 |
}
|
25 |
private static $_ignore_part_filters ;
|
26 |
|
27 |
const TYPE_CLEAR_LOG = 'clear_log' ;
|
28 |
+
const TYPE_BETA_TEST = 'beta_test' ;
|
29 |
+
|
30 |
+
const BETA_TEST_URL = 'beta_test_url' ;
|
31 |
|
32 |
/**
|
33 |
* Log class Constructor
|
52 |
|
53 |
}
|
54 |
|
55 |
+
/**
|
56 |
+
* Beta test upgrade
|
57 |
+
*
|
58 |
+
* @since 2.9.5
|
59 |
+
* @access private
|
60 |
+
*/
|
61 |
+
private function _beta_test()
|
62 |
+
{
|
63 |
+
if ( empty( $_POST[ self::BETA_TEST_URL ] ) ) {
|
64 |
+
return ;
|
65 |
+
}
|
66 |
+
|
67 |
+
// Generate zip url
|
68 |
+
$commit = substr( $_POST[ self::BETA_TEST_URL ], strpos( $_POST[ self::BETA_TEST_URL ], '/commit/' ) + 8 ) ;
|
69 |
+
$zip = $this->_package_zip( $commit ) ;
|
70 |
+
|
71 |
+
if ( ! $zip ) {
|
72 |
+
LiteSpeed_Cache_Log::debug( '[Log] ❌ No ZIP file' ) ;
|
73 |
+
return ;
|
74 |
+
}
|
75 |
+
|
76 |
+
LiteSpeed_Cache_Log::debug( '[Log] ZIP file ' . $zip ) ;
|
77 |
+
|
78 |
+
$update_plugins = get_site_transient( 'update_plugins' ) ;
|
79 |
+
if ( ! is_object( $update_plugins ) ) {
|
80 |
+
$update_plugins = new \stdClass() ;
|
81 |
+
}
|
82 |
+
|
83 |
+
$plugin_info = new \stdClass() ;
|
84 |
+
$plugin_info->new_version = LiteSpeed_Cache::PLUGIN_VERSION . '.0.0' ;
|
85 |
+
$plugin_info->slug = LiteSpeed_Cache::PLUGIN_NAME ;
|
86 |
+
$plugin_info->plugin = LiteSpeed_Cache::PLUGIN_FILE ;
|
87 |
+
$plugin_info->package = $zip ;
|
88 |
+
$plugin_info->url = 'https://wordpress.org/plugins/litespeed-cache/' ;
|
89 |
+
|
90 |
+
$update_plugins->response[ LiteSpeed_Cache::PLUGIN_FILE ] = $plugin_info ;
|
91 |
+
|
92 |
+
set_site_transient( 'update_plugins', $update_plugins ) ;
|
93 |
+
|
94 |
+
// Run upgrade
|
95 |
+
LiteSpeed_Cache_Activation::get_instance()->upgrade() ;
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* Git package refresh
|
100 |
+
*
|
101 |
+
* @since 2.9.5
|
102 |
+
* @access private
|
103 |
+
*/
|
104 |
+
private function _package_zip( $commit )
|
105 |
+
{
|
106 |
+
// Check latest stable version allowed to upgrade
|
107 |
+
$url = 'https://wp.api.litespeedtech.com/client.package_zip?commit=' . $commit ;
|
108 |
+
|
109 |
+
$response = wp_remote_get( $url, array( 'timeout' => 120 ) ) ;
|
110 |
+
if ( ! is_array( $response ) || empty( $response[ 'body' ] ) ) {
|
111 |
+
return false ;
|
112 |
+
}
|
113 |
+
|
114 |
+
$url = json_decode( $response[ 'body' ], true ) ;
|
115 |
+
|
116 |
+
if ( empty( $url[ 'zip' ] ) ) {
|
117 |
+
return false ;
|
118 |
+
}
|
119 |
+
|
120 |
+
return $url[ 'zip' ] ;
|
121 |
+
}
|
122 |
+
|
123 |
/**
|
124 |
* Log Purge headers separately
|
125 |
*
|
219 |
$server['SERVER_PROTOCOL'] .= ' (HTTPS) ' ;
|
220 |
}
|
221 |
|
222 |
+
$param = sprintf( '💓 ------%s %s %s', $server['REQUEST_METHOD'], $server['SERVER_PROTOCOL'], strtok( $server['REQUEST_URI'], '?' ) ) ;
|
223 |
|
224 |
$qs = ! empty( $server['QUERY_STRING'] ) ? $server['QUERY_STRING'] : '' ;
|
225 |
if ( LiteSpeed_Cache::config( LiteSpeed_Cache_Config::OPID_COLLAPS_QS ) ) {
|
467 |
$instance->_clear_log() ;
|
468 |
break ;
|
469 |
|
470 |
+
case self::TYPE_BETA_TEST :
|
471 |
+
$instance->_beta_test() ;
|
472 |
+
break ;
|
473 |
+
|
474 |
default:
|
475 |
break ;
|
476 |
}
|
inc/media.class.php
CHANGED
@@ -784,9 +784,15 @@ eot;
|
|
784 |
return false ;
|
785 |
}
|
786 |
|
787 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
788 |
// check if has webp file
|
789 |
-
if ( LiteSpeed_Cache_Utility::is_internal_file( $url, 'webp' ) ) {
|
790 |
$url .= '.webp' ;
|
791 |
}
|
792 |
else {
|
784 |
return false ;
|
785 |
}
|
786 |
|
787 |
+
/**
|
788 |
+
* WebP API hook
|
789 |
+
* NOTE: As $url may contain query strings, WebP check will need to parse_url before appending .webp
|
790 |
+
* @since 2.9.5
|
791 |
+
* @see #751737 - API docs for WEBP generation
|
792 |
+
*/
|
793 |
+
if ( apply_filters( 'litespeed_media_check_ori', LiteSpeed_Cache_Utility::is_internal_file( $url ), $url ) ) {
|
794 |
// check if has webp file
|
795 |
+
if ( apply_filters( 'litespeed_media_check_webp', LiteSpeed_Cache_Utility::is_internal_file( $url, 'webp' ), $url ) ) {
|
796 |
$url .= '.webp' ;
|
797 |
}
|
798 |
else {
|
inc/optimize.class.php
CHANGED
@@ -829,9 +829,9 @@ class LiteSpeed_Cache_Optimize
|
|
829 |
// }
|
830 |
|
831 |
// Check if has no-optimize attr
|
832 |
-
if ( strpos( $html_list[ $key ], 'data-
|
833 |
$ignored_html[] = $html_list[ $key ] ;
|
834 |
-
LiteSpeed_Cache_Log::debug2( '[Optm] Abort excludes: attr data-
|
835 |
continue ;
|
836 |
}
|
837 |
|
829 |
// }
|
830 |
|
831 |
// Check if has no-optimize attr
|
832 |
+
if ( strpos( $html_list[ $key ], 'data-ignore-optimize' ) !== false ) {
|
833 |
$ignored_html[] = $html_list[ $key ] ;
|
834 |
+
LiteSpeed_Cache_Log::debug2( '[Optm] Abort excludes: attr data-ignore-optimize' ) ;
|
835 |
continue ;
|
836 |
}
|
837 |
|
inc/rest.cls.php
CHANGED
File without changes
|
inc/vary.class.php
CHANGED
@@ -141,26 +141,32 @@ class LiteSpeed_Cache_Vary
|
|
141 |
*/
|
142 |
public function check_commenter( $comments )
|
143 |
{
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
}
|
150 |
-
}
|
151 |
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
|
|
160 |
}
|
161 |
-
}
|
162 |
|
163 |
-
|
|
|
164 |
}
|
165 |
|
166 |
// Current user/visitor has pending comments
|
141 |
*/
|
142 |
public function check_commenter( $comments )
|
143 |
{
|
144 |
+
/**
|
145 |
+
* Hook to bypass pending comment check for comment related plugins compatibility
|
146 |
+
* @since 2.9.5
|
147 |
+
*/
|
148 |
+
if ( apply_filters( 'litespeed_vary_check_commenter_pending', true ) ) {
|
149 |
+
$pending = false ;
|
150 |
+
foreach ( $comments as $comment ) {
|
151 |
+
if ( ! $comment->comment_approved ) {// current user has pending comment
|
152 |
+
$pending = true ;
|
153 |
+
break ;
|
154 |
+
}
|
155 |
}
|
|
|
156 |
|
157 |
+
// No pending comments, don't need to add private cache
|
158 |
+
if ( ! $pending ) {
|
159 |
+
$this->remove_commenter() ;
|
160 |
|
161 |
+
// Remove commenter prefilled info if exists, for public cache
|
162 |
+
foreach( $_COOKIE as $cookie_name => $cookie_value ) {
|
163 |
+
if ( strlen( $cookie_name ) >= 15 && strpos( $cookie_name, 'comment_author_' ) === 0 ) {
|
164 |
+
unset( $_COOKIE[ $cookie_name ] ) ;
|
165 |
+
}
|
166 |
}
|
|
|
167 |
|
168 |
+
return $comments ;
|
169 |
+
}
|
170 |
}
|
171 |
|
172 |
// Current user/visitor has pending comments
|
includes/litespeed-cache-activation.class.php
CHANGED
@@ -333,9 +333,9 @@ class LiteSpeed_Cache_Activation
|
|
333 |
* Upgrade LSCWP
|
334 |
*
|
335 |
* @since 2.9
|
336 |
-
* @access
|
337 |
*/
|
338 |
-
|
339 |
{
|
340 |
$plugin = LiteSpeed_Cache::PLUGIN_FILE ;
|
341 |
|
@@ -382,7 +382,7 @@ class LiteSpeed_Cache_Activation
|
|
382 |
|
383 |
switch ( $type ) {
|
384 |
case self::TYPE_UPGRADE :
|
385 |
-
$instance->
|
386 |
break ;
|
387 |
|
388 |
default:
|
333 |
* Upgrade LSCWP
|
334 |
*
|
335 |
* @since 2.9
|
336 |
+
* @access public
|
337 |
*/
|
338 |
+
public function upgrade()
|
339 |
{
|
340 |
$plugin = LiteSpeed_Cache::PLUGIN_FILE ;
|
341 |
|
382 |
|
383 |
switch ( $type ) {
|
384 |
case self::TYPE_UPGRADE :
|
385 |
+
$instance->upgrade() ;
|
386 |
break ;
|
387 |
|
388 |
default:
|
includes/litespeed-cache-api.class.php
CHANGED
@@ -530,6 +530,7 @@ class LiteSpeed_Cache_API extends LiteSpeed_Cache_Const
|
|
530 |
* Easiest way to replace WP nonce to an ESI widget
|
531 |
*
|
532 |
* @since 2.6
|
|
|
533 |
* @access public
|
534 |
*/
|
535 |
public static function nonce( $action = -1, $defence_for_html_filter = true )
|
@@ -539,7 +540,17 @@ class LiteSpeed_Cache_API extends LiteSpeed_Cache_Const
|
|
539 |
}
|
540 |
|
541 |
// Replace it to ESI
|
542 |
-
return self::esi_url( '
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
543 |
}
|
544 |
|
545 |
/**
|
530 |
* Easiest way to replace WP nonce to an ESI widget
|
531 |
*
|
532 |
* @since 2.6
|
533 |
+
* @deprecated 2.9.5 Dropped-in wp_create_nonce replacement
|
534 |
* @access public
|
535 |
*/
|
536 |
public static function nonce( $action = -1, $defence_for_html_filter = true )
|
540 |
}
|
541 |
|
542 |
// Replace it to ESI
|
543 |
+
return self::esi_url( 'nonce', 'LSCWP Nonce ESI ' . $action, array( 'action' => $action ), '', true, $defence_for_html_filter, true ) ;
|
544 |
+
}
|
545 |
+
|
546 |
+
/**
|
547 |
+
* Append an action to nonce to convert it to ESI
|
548 |
+
*
|
549 |
+
* @since 2.9.5
|
550 |
+
*/
|
551 |
+
public static function nonce_action( $action )
|
552 |
+
{
|
553 |
+
LiteSpeed_Cache_ESI::get_instance()->nonce_action( $action ) ;
|
554 |
}
|
555 |
|
556 |
/**
|
includes/litespeed-cache-esi.class.php
CHANGED
@@ -22,6 +22,7 @@ class LiteSpeed_Cache_ESI
|
|
22 |
private static $has_esi = false ;
|
23 |
private $esi_args = null ;
|
24 |
private $_esi_preserve_list = array() ;
|
|
|
25 |
|
26 |
const QS_ACTION = 'lsesi' ;
|
27 |
const QS_PARAMS = 'esi' ;
|
@@ -48,7 +49,7 @@ class LiteSpeed_Cache_ESI
|
|
48 |
add_action( 'wp_update_comment_count', 'LiteSpeed_Cache_Purge::purge_comment_widget' ) ;
|
49 |
|
50 |
// This defination is along with LiteSpeed_Cache_API::nonce() func
|
51 |
-
! defined( 'LSCWP_NONCE' ) && define( 'LSCWP_NONCE', true )
|
52 |
|
53 |
/**
|
54 |
* Recover REQUEST_URI
|
@@ -74,6 +75,81 @@ class LiteSpeed_Cache_ESI
|
|
74 |
if ( ! is_admin() ) {
|
75 |
add_shortcode( 'esi', array( $this, 'shortcode' ) ) ;
|
76 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
}
|
78 |
|
79 |
/**
|
@@ -162,7 +238,7 @@ class LiteSpeed_Cache_ESI
|
|
162 |
add_action('litespeed_cache_load_esi_block-admin-bar', array($this, 'load_admin_bar_block')) ;
|
163 |
add_action('litespeed_cache_load_esi_block-comment-form', array($this, 'load_comment_form_block')) ;
|
164 |
|
165 |
-
add_action('litespeed_cache_load_esi_block-
|
166 |
add_action('litespeed_cache_load_esi_block-esi', array( $this, 'load_esi_shortcode' ) ) ;
|
167 |
}
|
168 |
|
@@ -294,7 +370,7 @@ class LiteSpeed_Cache_ESI
|
|
294 |
$output = "<!-- lscwp $wrapper -->$output<!-- lscwp $wrapper esi end -->" ;
|
295 |
}
|
296 |
|
297 |
-
LiteSpeed_Cache_Log::debug( "ESI
|
298 |
LiteSpeed_Cache_Log::debug2( $output ) ;
|
299 |
|
300 |
self::set_has_esi() ;
|
@@ -350,11 +426,11 @@ class LiteSpeed_Cache_ESI
|
|
350 |
$params = $this->_parse_esi_param() ;
|
351 |
|
352 |
if ( defined( 'LSCWP_LOG' ) ) {
|
353 |
-
$logInfo = '
|
354 |
if( ! empty( $params[ self::PARAM_NAME ] ) ) {
|
355 |
$logInfo .= ' Name: ' . $params[ self::PARAM_NAME ] . ' ----- ' ;
|
356 |
}
|
357 |
-
$logInfo .=
|
358 |
LiteSpeed_Cache_Log::debug( $logInfo ) ;
|
359 |
}
|
360 |
|
@@ -621,7 +697,12 @@ class LiteSpeed_Cache_ESI
|
|
621 |
LiteSpeed_Cache_Control::set_private() ;
|
622 |
}
|
623 |
|
624 |
-
|
|
|
|
|
|
|
|
|
|
|
625 |
}
|
626 |
|
627 |
/**
|
22 |
private static $has_esi = false ;
|
23 |
private $esi_args = null ;
|
24 |
private $_esi_preserve_list = array() ;
|
25 |
+
private $_nonce_actions = array( -1 ) ;
|
26 |
|
27 |
const QS_ACTION = 'lsesi' ;
|
28 |
const QS_PARAMS = 'esi' ;
|
49 |
add_action( 'wp_update_comment_count', 'LiteSpeed_Cache_Purge::purge_comment_widget' ) ;
|
50 |
|
51 |
// This defination is along with LiteSpeed_Cache_API::nonce() func
|
52 |
+
! defined( 'LSCWP_NONCE' ) && define( 'LSCWP_NONCE', true ) ;//Used in Bloom
|
53 |
|
54 |
/**
|
55 |
* Recover REQUEST_URI
|
75 |
if ( ! is_admin() ) {
|
76 |
add_shortcode( 'esi', array( $this, 'shortcode' ) ) ;
|
77 |
}
|
78 |
+
|
79 |
+
/**
|
80 |
+
* Overwrite wp_create_nonce func
|
81 |
+
* @since 2.9.5
|
82 |
+
*/
|
83 |
+
if ( ! is_admin() && ! function_exists( 'wp_create_nonce' ) ) {
|
84 |
+
$this->_transform_nonce() ;
|
85 |
+
}
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* Take over all nonce calls and transform to ESI
|
90 |
+
*
|
91 |
+
* @since 2.9.5
|
92 |
+
*/
|
93 |
+
private function _transform_nonce()
|
94 |
+
{
|
95 |
+
LiteSpeed_Cache_Log::debug( '[ESI] Overwrite wp_create_nonce()' ) ;
|
96 |
+
/**
|
97 |
+
* If the nonce is in none_actions filter, convert it to ESI
|
98 |
+
*/
|
99 |
+
function wp_create_nonce( $action = -1 ) {
|
100 |
+
if ( LiteSpeed_Cache_ESI::get_instance()->is_nonce_action( $action ) ) {
|
101 |
+
$params = array(
|
102 |
+
'action' => $action,
|
103 |
+
) ;
|
104 |
+
return LiteSpeed_Cache_ESI::sub_esi_block( 'nonce', 'wp_create_nonce ' . $action, $params, '', true, true ) ;
|
105 |
+
}
|
106 |
+
|
107 |
+
return wp_create_nonce_litespeed_esi( $action ) ;
|
108 |
+
|
109 |
+
}
|
110 |
+
|
111 |
+
/**
|
112 |
+
* Ori WP wp_create_nonce
|
113 |
+
*/
|
114 |
+
function wp_create_nonce_litespeed_esi( $action = -1 ) {
|
115 |
+
$user = wp_get_current_user();
|
116 |
+
$uid = (int) $user->ID;
|
117 |
+
if ( ! $uid ) {
|
118 |
+
/** This filter is documented in wp-includes/pluggable.php */
|
119 |
+
$uid = apply_filters( 'nonce_user_logged_out', $uid, $action );
|
120 |
+
}
|
121 |
+
|
122 |
+
$token = wp_get_session_token();
|
123 |
+
$i = wp_nonce_tick();
|
124 |
+
|
125 |
+
return substr( wp_hash( $i . '|' . $action . '|' . $uid . '|' . $token, 'nonce' ), -12, 10 );
|
126 |
+
}
|
127 |
+
}
|
128 |
+
|
129 |
+
/**
|
130 |
+
* Register a new nonce action to convert it to ESI
|
131 |
+
*
|
132 |
+
* @since 2.9.5
|
133 |
+
*/
|
134 |
+
public function nonce_action( $action )
|
135 |
+
{
|
136 |
+
if ( in_array( $action, $this->_nonce_actions ) ) {
|
137 |
+
return ;
|
138 |
+
}
|
139 |
+
|
140 |
+
LiteSpeed_Cache_Log::debug( '[ESI] Append nonce action to nonce list [action] ' . $action ) ;
|
141 |
+
|
142 |
+
$this->_nonce_actions[] = $action ;
|
143 |
+
}
|
144 |
+
|
145 |
+
/**
|
146 |
+
* Check if an action is registered to replace ESI
|
147 |
+
*
|
148 |
+
* @since 2.9.5
|
149 |
+
*/
|
150 |
+
public function is_nonce_action( $action )
|
151 |
+
{
|
152 |
+
return in_array( $action, $this->_nonce_actions ) ;
|
153 |
}
|
154 |
|
155 |
/**
|
238 |
add_action('litespeed_cache_load_esi_block-admin-bar', array($this, 'load_admin_bar_block')) ;
|
239 |
add_action('litespeed_cache_load_esi_block-comment-form', array($this, 'load_comment_form_block')) ;
|
240 |
|
241 |
+
add_action('litespeed_cache_load_esi_block-nonce', array( $this, 'load_nonce_block' ) ) ;
|
242 |
add_action('litespeed_cache_load_esi_block-esi', array( $this, 'load_esi_shortcode' ) ) ;
|
243 |
}
|
244 |
|
370 |
$output = "<!-- lscwp $wrapper -->$output<!-- lscwp $wrapper esi end -->" ;
|
371 |
}
|
372 |
|
373 |
+
LiteSpeed_Cache_Log::debug( "[ESI] 💕 [BLock_ID] $block_id \t[wrapper] $wrapper \t\t[Control] $control" ) ;
|
374 |
LiteSpeed_Cache_Log::debug2( $output ) ;
|
375 |
|
376 |
self::set_has_esi() ;
|
426 |
$params = $this->_parse_esi_param() ;
|
427 |
|
428 |
if ( defined( 'LSCWP_LOG' ) ) {
|
429 |
+
$logInfo = '[ESI] ⭕ ' ;
|
430 |
if( ! empty( $params[ self::PARAM_NAME ] ) ) {
|
431 |
$logInfo .= ' Name: ' . $params[ self::PARAM_NAME ] . ' ----- ' ;
|
432 |
}
|
433 |
+
$logInfo .= ' [ID] ' . LSCACHE_IS_ESI ;
|
434 |
LiteSpeed_Cache_Log::debug( $logInfo ) ;
|
435 |
}
|
436 |
|
697 |
LiteSpeed_Cache_Control::set_private() ;
|
698 |
}
|
699 |
|
700 |
+
if ( function_exists( 'wp_create_nonce_litespeed_esi' ) ) {
|
701 |
+
echo wp_create_nonce_litespeed_esi( $action ) ;
|
702 |
+
}
|
703 |
+
else {
|
704 |
+
echo wp_create_nonce( $action ) ;
|
705 |
+
}
|
706 |
}
|
707 |
|
708 |
/**
|
includes/litespeed-cache-log.class.php
CHANGED
@@ -25,6 +25,9 @@ class LiteSpeed_Cache_Log
|
|
25 |
private static $_ignore_part_filters ;
|
26 |
|
27 |
const TYPE_CLEAR_LOG = 'clear_log' ;
|
|
|
|
|
|
|
28 |
|
29 |
/**
|
30 |
* Log class Constructor
|
@@ -49,6 +52,74 @@ class LiteSpeed_Cache_Log
|
|
49 |
|
50 |
}
|
51 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
/**
|
53 |
* Log Purge headers separately
|
54 |
*
|
@@ -148,7 +219,7 @@ class LiteSpeed_Cache_Log
|
|
148 |
$server['SERVER_PROTOCOL'] .= ' (HTTPS) ' ;
|
149 |
}
|
150 |
|
151 |
-
$param = sprintf( '------%s %s %s', $server['REQUEST_METHOD'], $server['SERVER_PROTOCOL'], strtok( $server['REQUEST_URI'], '?' ) ) ;
|
152 |
|
153 |
$qs = ! empty( $server['QUERY_STRING'] ) ? $server['QUERY_STRING'] : '' ;
|
154 |
if ( LiteSpeed_Cache::config( LiteSpeed_Cache_Config::OPID_COLLAPS_QS ) ) {
|
@@ -396,6 +467,10 @@ class LiteSpeed_Cache_Log
|
|
396 |
$instance->_clear_log() ;
|
397 |
break ;
|
398 |
|
|
|
|
|
|
|
|
|
399 |
default:
|
400 |
break ;
|
401 |
}
|
25 |
private static $_ignore_part_filters ;
|
26 |
|
27 |
const TYPE_CLEAR_LOG = 'clear_log' ;
|
28 |
+
const TYPE_BETA_TEST = 'beta_test' ;
|
29 |
+
|
30 |
+
const BETA_TEST_URL = 'beta_test_url' ;
|
31 |
|
32 |
/**
|
33 |
* Log class Constructor
|
52 |
|
53 |
}
|
54 |
|
55 |
+
/**
|
56 |
+
* Beta test upgrade
|
57 |
+
*
|
58 |
+
* @since 2.9.5
|
59 |
+
* @access private
|
60 |
+
*/
|
61 |
+
private function _beta_test()
|
62 |
+
{
|
63 |
+
if ( empty( $_POST[ self::BETA_TEST_URL ] ) ) {
|
64 |
+
return ;
|
65 |
+
}
|
66 |
+
|
67 |
+
// Generate zip url
|
68 |
+
$commit = substr( $_POST[ self::BETA_TEST_URL ], strpos( $_POST[ self::BETA_TEST_URL ], '/commit/' ) + 8 ) ;
|
69 |
+
$zip = $this->_package_zip( $commit ) ;
|
70 |
+
|
71 |
+
if ( ! $zip ) {
|
72 |
+
LiteSpeed_Cache_Log::debug( '[Log] ❌ No ZIP file' ) ;
|
73 |
+
return ;
|
74 |
+
}
|
75 |
+
|
76 |
+
LiteSpeed_Cache_Log::debug( '[Log] ZIP file ' . $zip ) ;
|
77 |
+
|
78 |
+
$update_plugins = get_site_transient( 'update_plugins' ) ;
|
79 |
+
if ( ! is_object( $update_plugins ) ) {
|
80 |
+
$update_plugins = new \stdClass() ;
|
81 |
+
}
|
82 |
+
|
83 |
+
$plugin_info = new \stdClass() ;
|
84 |
+
$plugin_info->new_version = LiteSpeed_Cache::PLUGIN_VERSION . '.0.0' ;
|
85 |
+
$plugin_info->slug = LiteSpeed_Cache::PLUGIN_NAME ;
|
86 |
+
$plugin_info->plugin = LiteSpeed_Cache::PLUGIN_FILE ;
|
87 |
+
$plugin_info->package = $zip ;
|
88 |
+
$plugin_info->url = 'https://wordpress.org/plugins/litespeed-cache/' ;
|
89 |
+
|
90 |
+
$update_plugins->response[ LiteSpeed_Cache::PLUGIN_FILE ] = $plugin_info ;
|
91 |
+
|
92 |
+
set_site_transient( 'update_plugins', $update_plugins ) ;
|
93 |
+
|
94 |
+
// Run upgrade
|
95 |
+
LiteSpeed_Cache_Activation::get_instance()->upgrade() ;
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* Git package refresh
|
100 |
+
*
|
101 |
+
* @since 2.9.5
|
102 |
+
* @access private
|
103 |
+
*/
|
104 |
+
private function _package_zip( $commit )
|
105 |
+
{
|
106 |
+
// Check latest stable version allowed to upgrade
|
107 |
+
$url = 'https://wp.api.litespeedtech.com/client.package_zip?commit=' . $commit ;
|
108 |
+
|
109 |
+
$response = wp_remote_get( $url, array( 'timeout' => 120 ) ) ;
|
110 |
+
if ( ! is_array( $response ) || empty( $response[ 'body' ] ) ) {
|
111 |
+
return false ;
|
112 |
+
}
|
113 |
+
|
114 |
+
$url = json_decode( $response[ 'body' ], true ) ;
|
115 |
+
|
116 |
+
if ( empty( $url[ 'zip' ] ) ) {
|
117 |
+
return false ;
|
118 |
+
}
|
119 |
+
|
120 |
+
return $url[ 'zip' ] ;
|
121 |
+
}
|
122 |
+
|
123 |
/**
|
124 |
* Log Purge headers separately
|
125 |
*
|
219 |
$server['SERVER_PROTOCOL'] .= ' (HTTPS) ' ;
|
220 |
}
|
221 |
|
222 |
+
$param = sprintf( '💓 ------%s %s %s', $server['REQUEST_METHOD'], $server['SERVER_PROTOCOL'], strtok( $server['REQUEST_URI'], '?' ) ) ;
|
223 |
|
224 |
$qs = ! empty( $server['QUERY_STRING'] ) ? $server['QUERY_STRING'] : '' ;
|
225 |
if ( LiteSpeed_Cache::config( LiteSpeed_Cache_Config::OPID_COLLAPS_QS ) ) {
|
467 |
$instance->_clear_log() ;
|
468 |
break ;
|
469 |
|
470 |
+
case self::TYPE_BETA_TEST :
|
471 |
+
$instance->_beta_test() ;
|
472 |
+
break ;
|
473 |
+
|
474 |
default:
|
475 |
break ;
|
476 |
}
|
includes/litespeed-cache-optimize.class.php
CHANGED
@@ -829,9 +829,9 @@ class LiteSpeed_Cache_Optimize
|
|
829 |
// }
|
830 |
|
831 |
// Check if has no-optimize attr
|
832 |
-
if ( strpos( $html_list[ $key ], 'data-
|
833 |
$ignored_html[] = $html_list[ $key ] ;
|
834 |
-
LiteSpeed_Cache_Log::debug2( '[Optm] Abort excludes: attr data-
|
835 |
continue ;
|
836 |
}
|
837 |
|
829 |
// }
|
830 |
|
831 |
// Check if has no-optimize attr
|
832 |
+
if ( strpos( $html_list[ $key ], 'data-ignore-optimize' ) !== false ) {
|
833 |
$ignored_html[] = $html_list[ $key ] ;
|
834 |
+
LiteSpeed_Cache_Log::debug2( '[Optm] Abort excludes: attr data-ignore-optimize' ) ;
|
835 |
continue ;
|
836 |
}
|
837 |
|
includes/litespeed-cache-vary.class.php
CHANGED
@@ -141,26 +141,32 @@ class LiteSpeed_Cache_Vary
|
|
141 |
*/
|
142 |
public function check_commenter( $comments )
|
143 |
{
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
}
|
150 |
-
}
|
151 |
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
|
|
160 |
}
|
161 |
-
}
|
162 |
|
163 |
-
|
|
|
164 |
}
|
165 |
|
166 |
// Current user/visitor has pending comments
|
141 |
*/
|
142 |
public function check_commenter( $comments )
|
143 |
{
|
144 |
+
/**
|
145 |
+
* Hook to bypass pending comment check for comment related plugins compatibility
|
146 |
+
* @since 2.9.5
|
147 |
+
*/
|
148 |
+
if ( apply_filters( 'litespeed_vary_check_commenter_pending', true ) ) {
|
149 |
+
$pending = false ;
|
150 |
+
foreach ( $comments as $comment ) {
|
151 |
+
if ( ! $comment->comment_approved ) {// current user has pending comment
|
152 |
+
$pending = true ;
|
153 |
+
break ;
|
154 |
+
}
|
155 |
}
|
|
|
156 |
|
157 |
+
// No pending comments, don't need to add private cache
|
158 |
+
if ( ! $pending ) {
|
159 |
+
$this->remove_commenter() ;
|
160 |
|
161 |
+
// Remove commenter prefilled info if exists, for public cache
|
162 |
+
foreach( $_COOKIE as $cookie_name => $cookie_value ) {
|
163 |
+
if ( strlen( $cookie_name ) >= 15 && strpos( $cookie_name, 'comment_author_' ) === 0 ) {
|
164 |
+
unset( $_COOKIE[ $cookie_name ] ) ;
|
165 |
+
}
|
166 |
}
|
|
|
167 |
|
168 |
+
return $comments ;
|
169 |
+
}
|
170 |
}
|
171 |
|
172 |
// Current user/visitor has pending comments
|
includes/litespeed-cache.class.php
CHANGED
@@ -26,7 +26,7 @@ class LiteSpeed_Cache
|
|
26 |
const NAME = 'LiteSpeed Cache' ;
|
27 |
const PLUGIN_NAME = 'litespeed-cache' ;
|
28 |
const PLUGIN_FILE = 'litespeed-cache/litespeed-cache.php' ;
|
29 |
-
const PLUGIN_VERSION = '2.9.
|
30 |
|
31 |
const PAGE_EDIT_HTACCESS = 'lscache-edit-htaccess' ;
|
32 |
|
@@ -573,9 +573,14 @@ class LiteSpeed_Cache
|
|
573 |
* @since 2.9.4 ESI req could be from internal REST call, so moved json_encode out of this cond
|
574 |
*/
|
575 |
if ( defined( 'LSCACHE_IS_ESI' ) ) {
|
576 |
-
LiteSpeed_Cache_Log::debug( '[Core] ESI
|
577 |
-
|
578 |
-
|
|
|
|
|
|
|
|
|
|
|
579 |
}
|
580 |
|
581 |
if ( apply_filters( 'litespeed_is_json', false ) ) {
|
26 |
const NAME = 'LiteSpeed Cache' ;
|
27 |
const PLUGIN_NAME = 'litespeed-cache' ;
|
28 |
const PLUGIN_FILE = 'litespeed-cache/litespeed-cache.php' ;
|
29 |
+
const PLUGIN_VERSION = '2.9.5' ;
|
30 |
|
31 |
const PAGE_EDIT_HTACCESS = 'lscache-edit-htaccess' ;
|
32 |
|
573 |
* @since 2.9.4 ESI req could be from internal REST call, so moved json_encode out of this cond
|
574 |
*/
|
575 |
if ( defined( 'LSCACHE_IS_ESI' ) ) {
|
576 |
+
LiteSpeed_Cache_Log::debug( '[Core] ESI Start 👇' ) ;
|
577 |
+
if ( strlen( $buffer ) > 100 ) {
|
578 |
+
LiteSpeed_Cache_Log::debug( trim( substr( $buffer, 0, 100 ) ) . '.....' ) ;
|
579 |
+
}
|
580 |
+
else {
|
581 |
+
LiteSpeed_Cache_Log::debug( $buffer ) ;
|
582 |
+
}
|
583 |
+
LiteSpeed_Cache_Log::debug( '[Core] ESI End 👆' ) ;
|
584 |
}
|
585 |
|
586 |
if ( apply_filters( 'litespeed_is_json', false ) ) {
|
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.9.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/litespeed-cache\n"
|
7 |
-
"POT-Creation-Date: 2019-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -713,11 +713,19 @@ msgid ""
|
|
713 |
"crawling."
|
714 |
msgstr ""
|
715 |
|
716 |
-
#: admin/tpl/debug_log.php:
|
717 |
msgid "LiteSpeed Cache Debug Log Viewer"
|
718 |
msgstr ""
|
719 |
|
720 |
-
#: admin/tpl/debug_log.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
721 |
msgid "Clear Log"
|
722 |
msgstr ""
|
723 |
|
@@ -852,7 +860,7 @@ msgstr ""
|
|
852 |
msgid "Rate %s on %s"
|
853 |
msgstr ""
|
854 |
|
855 |
-
#. #-#-#-#-# litespeed-cache.pot (LiteSpeed Cache 2.9.
|
856 |
#. Plugin Name of the plugin/theme
|
857 |
#: admin/tpl/inc/admin_footer.php:6
|
858 |
#: admin/tpl/inc/banner_promo.new_version.php:56 inc/gui.class.php:477
|
@@ -884,10 +892,6 @@ msgstr ""
|
|
884 |
msgid "New release %s is available now."
|
885 |
msgstr ""
|
886 |
|
887 |
-
#: admin/tpl/inc/banner_promo.new_version.php:68
|
888 |
-
msgid "Upgrade"
|
889 |
-
msgstr ""
|
890 |
-
|
891 |
#: admin/tpl/inc/banner_promo.new_version.php:78
|
892 |
msgid "Turn On Auto Upgrade"
|
893 |
msgstr ""
|
@@ -2847,11 +2851,13 @@ msgid "Cache Mobile"
|
|
2847 |
msgstr ""
|
2848 |
|
2849 |
#: admin/tpl/setting/settings_inc.cache_mobile.php:14
|
2850 |
-
msgid "
|
2851 |
msgstr ""
|
2852 |
|
2853 |
#: admin/tpl/setting/settings_inc.cache_mobile.php:15
|
2854 |
-
msgid "
|
|
|
|
|
2855 |
msgstr ""
|
2856 |
|
2857 |
#: admin/tpl/setting/settings_inc.cache_mobile.php:25
|
@@ -4147,8 +4153,8 @@ msgstr ""
|
|
4147 |
msgid "Communicated with LiteSpeed Image Optimization Server successfully."
|
4148 |
msgstr ""
|
4149 |
|
4150 |
-
#: inc/img_optm.class.php:167 inc/img_optm.class.php:
|
4151 |
-
#: inc/img_optm.class.php:
|
4152 |
msgid "No image found."
|
4153 |
msgstr ""
|
4154 |
|
@@ -4179,41 +4185,41 @@ msgid ""
|
|
4179 |
"automated."
|
4180 |
msgstr ""
|
4181 |
|
4182 |
-
#: inc/img_optm.class.php:
|
4183 |
msgid "Destroy unfinished data successfully."
|
4184 |
msgstr ""
|
4185 |
|
4186 |
-
#: inc/img_optm.class.php:
|
4187 |
msgid ""
|
4188 |
"Pushed %1$s groups with %2$s images to LiteSpeed optimization server, "
|
4189 |
"accepted %3$s groups with %4$s images."
|
4190 |
msgstr ""
|
4191 |
|
4192 |
-
#: inc/img_optm.class.php:
|
4193 |
msgid "Removed %1$s images and saved %2$s successfully."
|
4194 |
msgstr ""
|
4195 |
|
4196 |
-
#: inc/img_optm.class.php:
|
4197 |
msgid "Switched images successfully."
|
4198 |
msgstr ""
|
4199 |
|
4200 |
-
#: inc/img_optm.class.php:
|
4201 |
msgid "Disabled WebP file successfully."
|
4202 |
msgstr ""
|
4203 |
|
4204 |
-
#: inc/img_optm.class.php:
|
4205 |
msgid "Enabled WebP file successfully."
|
4206 |
msgstr ""
|
4207 |
|
4208 |
-
#: inc/img_optm.class.php:
|
4209 |
msgid "Restored original file successfully."
|
4210 |
msgstr ""
|
4211 |
|
4212 |
-
#: inc/img_optm.class.php:
|
4213 |
msgid "Switched to optimized file successfully."
|
4214 |
msgstr ""
|
4215 |
|
4216 |
-
#: inc/img_optm.class.php:
|
4217 |
msgid "Reset the optimized data successfully."
|
4218 |
msgstr ""
|
4219 |
|
@@ -4341,15 +4347,15 @@ msgstr ""
|
|
4341 |
msgid "LiteSpeed Cache Custom Cron Crawler"
|
4342 |
msgstr ""
|
4343 |
|
4344 |
-
#: inc/utility.class.php:
|
4345 |
msgid "just now"
|
4346 |
msgstr ""
|
4347 |
|
4348 |
-
#: inc/utility.class.php:
|
4349 |
msgid "right now"
|
4350 |
msgstr ""
|
4351 |
|
4352 |
-
#: inc/utility.class.php:
|
4353 |
msgid " %s ago"
|
4354 |
msgstr ""
|
4355 |
|
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.9.5\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/litespeed-cache\n"
|
7 |
+
"POT-Creation-Date: 2019-03-14 17:35:45+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
713 |
"crawling."
|
714 |
msgstr ""
|
715 |
|
716 |
+
#: admin/tpl/debug_log.php:8
|
717 |
msgid "LiteSpeed Cache Debug Log Viewer"
|
718 |
msgstr ""
|
719 |
|
720 |
+
#: admin/tpl/debug_log.php:20
|
721 |
+
msgid "Try GitHub Version"
|
722 |
+
msgstr ""
|
723 |
+
|
724 |
+
#: admin/tpl/debug_log.php:26 admin/tpl/inc/banner_promo.new_version.php:68
|
725 |
+
msgid "Upgrade"
|
726 |
+
msgstr ""
|
727 |
+
|
728 |
+
#: admin/tpl/debug_log.php:42
|
729 |
msgid "Clear Log"
|
730 |
msgstr ""
|
731 |
|
860 |
msgid "Rate %s on %s"
|
861 |
msgstr ""
|
862 |
|
863 |
+
#. #-#-#-#-# litespeed-cache.pot (LiteSpeed Cache 2.9.5) #-#-#-#-#
|
864 |
#. Plugin Name of the plugin/theme
|
865 |
#: admin/tpl/inc/admin_footer.php:6
|
866 |
#: admin/tpl/inc/banner_promo.new_version.php:56 inc/gui.class.php:477
|
892 |
msgid "New release %s is available now."
|
893 |
msgstr ""
|
894 |
|
|
|
|
|
|
|
|
|
895 |
#: admin/tpl/inc/banner_promo.new_version.php:78
|
896 |
msgid "Turn On Auto Upgrade"
|
897 |
msgstr ""
|
2851 |
msgstr ""
|
2852 |
|
2853 |
#: admin/tpl/setting/settings_inc.cache_mobile.php:14
|
2854 |
+
msgid "Cache mobile views separately."
|
2855 |
msgstr ""
|
2856 |
|
2857 |
#: admin/tpl/setting/settings_inc.cache_mobile.php:15
|
2858 |
+
msgid ""
|
2859 |
+
"Only enable for AMP or mobile-specific design/content, not for responsive "
|
2860 |
+
"sites."
|
2861 |
msgstr ""
|
2862 |
|
2863 |
#: admin/tpl/setting/settings_inc.cache_mobile.php:25
|
4153 |
msgid "Communicated with LiteSpeed Image Optimization Server successfully."
|
4154 |
msgstr ""
|
4155 |
|
4156 |
+
#: inc/img_optm.class.php:167 inc/img_optm.class.php:1464
|
4157 |
+
#: inc/img_optm.class.php:1529
|
4158 |
msgid "No image found."
|
4159 |
msgstr ""
|
4160 |
|
4185 |
"automated."
|
4186 |
msgstr ""
|
4187 |
|
4188 |
+
#: inc/img_optm.class.php:1353
|
4189 |
msgid "Destroy unfinished data successfully."
|
4190 |
msgstr ""
|
4191 |
|
4192 |
+
#: inc/img_optm.class.php:1567
|
4193 |
msgid ""
|
4194 |
"Pushed %1$s groups with %2$s images to LiteSpeed optimization server, "
|
4195 |
"accepted %3$s groups with %4$s images."
|
4196 |
msgstr ""
|
4197 |
|
4198 |
+
#: inc/img_optm.class.php:1743
|
4199 |
msgid "Removed %1$s images and saved %2$s successfully."
|
4200 |
msgstr ""
|
4201 |
|
4202 |
+
#: inc/img_optm.class.php:1938
|
4203 |
msgid "Switched images successfully."
|
4204 |
msgstr ""
|
4205 |
|
4206 |
+
#: inc/img_optm.class.php:1969
|
4207 |
msgid "Disabled WebP file successfully."
|
4208 |
msgstr ""
|
4209 |
|
4210 |
+
#: inc/img_optm.class.php:1975
|
4211 |
msgid "Enabled WebP file successfully."
|
4212 |
msgstr ""
|
4213 |
|
4214 |
+
#: inc/img_optm.class.php:1991
|
4215 |
msgid "Restored original file successfully."
|
4216 |
msgstr ""
|
4217 |
|
4218 |
+
#: inc/img_optm.class.php:1998
|
4219 |
msgid "Switched to optimized file successfully."
|
4220 |
msgstr ""
|
4221 |
|
4222 |
+
#: inc/img_optm.class.php:2058
|
4223 |
msgid "Reset the optimized data successfully."
|
4224 |
msgstr ""
|
4225 |
|
4347 |
msgid "LiteSpeed Cache Custom Cron Crawler"
|
4348 |
msgstr ""
|
4349 |
|
4350 |
+
#: inc/utility.class.php:235 includes/litespeed-cache-utility.class.php:235
|
4351 |
msgid "just now"
|
4352 |
msgstr ""
|
4353 |
|
4354 |
+
#: inc/utility.class.php:235 includes/litespeed-cache-utility.class.php:235
|
4355 |
msgid "right now"
|
4356 |
msgstr ""
|
4357 |
|
4358 |
+
#: inc/utility.class.php:238 includes/litespeed-cache-utility.class.php:238
|
4359 |
msgid " %s ago"
|
4360 |
msgstr ""
|
4361 |
|
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.9.
|
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.9.5
|
19 |
* Author: LiteSpeed Technologies
|
20 |
* Author URI: https://www.litespeedtech.com
|
21 |
* License: GPLv3
|
readme.txt
CHANGED
@@ -2,8 +2,8 @@
|
|
2 |
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: 5.1
|
6 |
-
Stable tag: 2.9.
|
7 |
License: GPLv3
|
8 |
License URI: http://www.gnu.org/licenses/gpl.html
|
9 |
|
@@ -279,10 +279,24 @@ Click on the `Advanced View` link at the top of the page, and several more tabs
|
|
279 |
* [BoomBox — Viral Magazine WordPress Theme](https://themeforest.net/item/boombox-viral-buzz-wordpress-theme/16596434?ref=PX-lab)
|
280 |
* Beaver Builder
|
281 |
* FacetWP (LSWS 5.3.6+)
|
|
|
282 |
|
283 |
|
284 |
== Changelog ==
|
285 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
286 |
= 2.9.4.1 - Feb 28 2019 =
|
287 |
* 🔥🐞<strong>Tag</strong>: Fixed issue where unnecessary warning potentially displayed after upgrade process when object cache is enabled.
|
288 |
|
2 |
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: 5.1.1
|
6 |
+
Stable tag: 2.9.5
|
7 |
License: GPLv3
|
8 |
License URI: http://www.gnu.org/licenses/gpl.html
|
9 |
|
279 |
* [BoomBox — Viral Magazine WordPress Theme](https://themeforest.net/item/boombox-viral-buzz-wordpress-theme/16596434?ref=PX-lab)
|
280 |
* Beaver Builder
|
281 |
* FacetWP (LSWS 5.3.6+)
|
282 |
+
* WpDiscuz
|
283 |
|
284 |
|
285 |
== Changelog ==
|
286 |
|
287 |
+
= 2.9.5 - Mar 14 2019 =
|
288 |
+
* 🌱 Auto convert default WordPress nonce to ESI to avoid expiration.
|
289 |
+
* 🌱 <strong>API</strong>: Ability to easily convert custom nonce to ESI by registering `LiteSpeed_Cache_API::nonce_action`.
|
290 |
+
* <strong>OPTM</strong>: Tweaked redundant attr `data-no-optimize` in func `_analyse_links` to `data-ignore-optimize` to offer the API to bypass optimization but still move src to top of source code.
|
291 |
+
* <strong>API</strong>: Renamed default nonce ESI ID from `lscwp_nonce_esi` to `nonce`.
|
292 |
+
* <strong>API</strong>: Added WebP generation & validation hook API. (@alim #wp-stateless)
|
293 |
+
* <strong>API</strong>: Added hook to bypass vary commenter check. (#wpdiscuz)
|
294 |
+
* <strong>Doc</strong>: Clarified Cache Mobile description. (@JohnnyNguyen)
|
295 |
+
* <strong>Doc</strong>: Replaced incorrect link in description. (@JohnnyNguyen)
|
296 |
+
* <strong>3rd</strong>: Improved wpDiscuz compatibility.
|
297 |
+
* 🐞<strong>3rd</strong>: Fixed Divi Theme Builder comment compatibility on non-builder pages. (#410919)
|
298 |
+
* <strong>3rd</strong>: Added YITH ESI adjustment.
|
299 |
+
|
300 |
= 2.9.4.1 - Feb 28 2019 =
|
301 |
* 🔥🐞<strong>Tag</strong>: Fixed issue where unnecessary warning potentially displayed after upgrade process when object cache is enabled.
|
302 |
|
thirdparty/lscwp-3rd-divi-theme-builder.cls.php
CHANGED
@@ -19,6 +19,7 @@ class LiteSpeed_Cache_ThirdParty_Divi_Theme_Builder
|
|
19 |
public static function detect()
|
20 |
{
|
21 |
if ( ! defined( 'ET_CORE' ) ) return ;
|
|
|
22 |
|
23 |
add_action( 'et_fb_before_comments_template', 'LiteSpeed_Cache_ThirdParty_Divi_Theme_Builder::js_comment_box_on' ) ;
|
24 |
add_action( 'et_fb_after_comments_template', 'LiteSpeed_Cache_ThirdParty_Divi_Theme_Builder::js_comment_box_off' ) ;
|
19 |
public static function detect()
|
20 |
{
|
21 |
if ( ! defined( 'ET_CORE' ) ) return ;
|
22 |
+
if ( empty( $_GET['et_fb'] ) ) return ;
|
23 |
|
24 |
add_action( 'et_fb_before_comments_template', 'LiteSpeed_Cache_ThirdParty_Divi_Theme_Builder::js_comment_box_on' ) ;
|
25 |
add_action( 'et_fb_after_comments_template', 'LiteSpeed_Cache_ThirdParty_Divi_Theme_Builder::js_comment_box_off' ) ;
|
thirdparty/lscwp-3rd-wpdiscuz.cls.php
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The Third Party integration with Wpdiscuz.
|
4 |
+
*
|
5 |
+
* @since 2.9.5
|
6 |
+
* @package LiteSpeed_Cache
|
7 |
+
* @subpackage LiteSpeed_Cache/thirdparty
|
8 |
+
* @author LiteSpeed Technologies <info@litespeedtech.com>
|
9 |
+
*/
|
10 |
+
if ( ! defined('ABSPATH') ) {
|
11 |
+
die() ;
|
12 |
+
}
|
13 |
+
|
14 |
+
LiteSpeed_Cache_API::register( 'LiteSpeed_Cache_ThirdParty_Wpdiscuz' ) ;
|
15 |
+
|
16 |
+
class LiteSpeed_Cache_ThirdParty_Wpdiscuz
|
17 |
+
{
|
18 |
+
public static function detect()
|
19 |
+
{
|
20 |
+
if ( ! defined( 'WPDISCUZ_DS' ) ) return ;
|
21 |
+
|
22 |
+
LiteSpeed_Cache_ThirdParty_Wpdiscuz::check_commenter() ;
|
23 |
+
add_action( 'wpdiscuz_add_comment', 'LiteSpeed_Cache_ThirdParty_Wpdiscuz::add_comment' ) ;
|
24 |
+
|
25 |
+
}
|
26 |
+
|
27 |
+
public static function add_comment()
|
28 |
+
{
|
29 |
+
LiteSpeed_Cache_Vary::get_instance()->append_commenter() ;
|
30 |
+
}
|
31 |
+
|
32 |
+
public static function check_commenter()
|
33 |
+
{
|
34 |
+
$commentor = wp_get_current_commenter() ;
|
35 |
+
|
36 |
+
if ( strlen( $commentor[ 'comment_author' ] ) > 0 ) {
|
37 |
+
add_filter( 'litespeed_vary_check_commenter_pending', '__return_false' ) ;
|
38 |
+
}
|
39 |
+
}
|
40 |
+
}
|
thirdparty/lscwp-3rd-wpml.cls.php
CHANGED
File without changes
|
thirdparty/lscwp-3rd-yith-wishlist.cls.php
CHANGED
@@ -86,8 +86,7 @@ class LiteSpeed_Cache_ThirdParty_Yith_Wishlist
|
|
86 |
$params = array(
|
87 |
self::ESI_PARAM_POSTID => $post->ID
|
88 |
) ;
|
89 |
-
|
90 |
-
return '' ;
|
91 |
}
|
92 |
|
93 |
/**
|
86 |
$params = array(
|
87 |
self::ESI_PARAM_POSTID => $post->ID
|
88 |
) ;
|
89 |
+
return LiteSpeed_Cache_API::esi_url( 'yith-wcwl-add', 'YITH ADD TO WISHLIST', $params ) ;
|
|
|
90 |
}
|
91 |
|
92 |
/**
|
thirdparty/lscwp-registry-3rd.php
CHANGED
@@ -32,6 +32,7 @@ $thirdparty_list = array(
|
|
32 |
'wp-postratings',
|
33 |
'divi-theme-builder',
|
34 |
'wpml',
|
|
|
35 |
) ;
|
36 |
|
37 |
foreach ($thirdparty_list as $val) {
|
32 |
'wp-postratings',
|
33 |
'divi-theme-builder',
|
34 |
'wpml',
|
35 |
+
'wpdiscuz',
|
36 |
) ;
|
37 |
|
38 |
foreach ($thirdparty_list as $val) {
|