LiteSpeed Cache - Version 3.6.1

Version Description

  • Dec 21 2020 =
  • WP Tested up to WP v5.6.
  • WebP Reverted WebP support on Safari Big Sur and Safari v14.0.1+ due to an inability to detect MacOS versions from UA. (@antomal)
  • CDN Dropped the option Load JQuery Remotely.
  • CDN Fixed CDN URL replacement issue in optimized CSS files. (@ankit)
  • CDN Fixed an issue where CDN CLI wouldn't set mapping image/CSS/JS to OFF when false was the value.
  • CDN Started using React for CDN Mapping settings.
  • GUI Secured Server IP setting from potential XSS issues. (@WonTae Jang)
  • Toolbox Supported both dev and master branches for Beta Test. Latest version updated to v3.6.1.
  • Purge Purge Pages now can purge non-archive pages too.
  • Admin Simplified the admin JS.
  • Admin Limited crawler-related react JS to crawler page only.
Download this release

Release Info

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

Code changes from version 3.6 to 3.6.1

assets/js/component.cdn.js ADDED
@@ -0,0 +1,149 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * CDN module
3
+ * @author Hai Zheng
4
+ */
5
+ class CDNMapping extends React.Component {
6
+ constructor( props ) {
7
+ super( props );
8
+ this.state = {
9
+ list: props.list
10
+ };
11
+
12
+ this.onChange = this.onChange.bind( this );
13
+ this.delRow = this.delRow.bind( this );
14
+ this.addNew = this.addNew.bind( this );
15
+ }
16
+
17
+ onChange( e, index ) {
18
+ const target = e.currentTarget;
19
+ const value = target.dataset.hasOwnProperty('value') ? Boolean(target.dataset.value*1) : target.value;
20
+ const list = this.state.list;
21
+ list[ index ][ target.dataset.type ] = value;
22
+
23
+ this.setState( {
24
+ list: list
25
+ } );
26
+ }
27
+
28
+ delRow( index ) {
29
+ const data = this.state.list;
30
+ data.splice( index, 1 );
31
+ this.setState( { list: data } );
32
+ }
33
+
34
+ addNew() {
35
+ const list = this.state.list;
36
+ list.push( { url: '' } );
37
+ this.setState( { list: list } );
38
+ }
39
+
40
+ render() {
41
+ return (
42
+ <React.Fragment>
43
+ { this.state.list.map( (item, i) => (
44
+ <CDNMappingBlock item={item} key={i} index={i} onChange={this.onChange} delRow={this.delRow} />
45
+ ) ) }
46
+
47
+ <p>
48
+ <button type="button" className="button button-link litespeed-form-action litespeed-link-with-icon" onClick={this.addNew}>
49
+ <span className="dashicons dashicons-plus-alt"></span>{litespeed_data[ 'lang' ][ 'add_cdn_mapping_row' ]}
50
+ </button>
51
+ </p>
52
+ </React.Fragment>
53
+ );
54
+ }
55
+ }
56
+
57
+ // { url: '', inc_img: true, inc_css: false, inc_js: false, filetype: [ '.aac', '.eot', ... ] }
58
+ class CDNMappingBlock extends React.Component {
59
+ constructor( props ) {
60
+ super( props );
61
+
62
+ this.onChange = this.onChange.bind( this );
63
+ this.delRow = this.delRow.bind( this );
64
+ }
65
+
66
+ onChange( e ) {
67
+ this.props.onChange( e, this.props.index );
68
+ }
69
+
70
+ delRow() {
71
+ this.props.delRow( this.props.index );
72
+ }
73
+
74
+ render() {
75
+ const name_prefix = litespeed_data[ 'ids' ][ 'cdn_mapping' ];
76
+
77
+ const item = this.props.item;
78
+
79
+ const filetype = item.filetype ? Array.isArray(item.filetype) ? item.filetype.join("\n") : item.filetype : '';
80
+ return (
81
+ <div className="litespeed-block">
82
+ <div className='litespeed-cdn-mapping-col1'>
83
+ <label className="litespeed-form-label">{ litespeed_data[ 'lang' ][ 'cdn_mapping_url' ] }</label>
84
+ <input type="text" name={ name_prefix + '[url][]' } className="regular-text litespeed-input-long" value={item.url} data-type="url" onChange={this.onChange} />
85
+
86
+ <div className="litespeed-desc">
87
+ <span dangerouslySetInnerHTML={{ __html: litespeed_data[ 'lang' ][ 'cdn_mapping_url_desc' ] }} />
88
+ </div>
89
+ </div>
90
+
91
+ <div className="litespeed-col-auto litespeed-cdn-mapping-col2">
92
+ <div className="litespeed-row litespeed-toggle-wrapper">
93
+ <div className="litespeed-cdn-mapping-inc litespeed-form-label litespeed-form-label--toggle">
94
+ { litespeed_data[ 'lang' ][ 'cdn_mapping_inc_img' ] }
95
+ </div>
96
+ <div className={`litespeed-toggle litespeed-toggle-btn litespeed-toggle-btn-${item.inc_img?'primary':'default litespeed-toggleoff'}`} data-type="inc_img" data-value={item.inc_img?0:1} onClick={this.onChange}>
97
+ <input name={ name_prefix + '[inc_img][]' } type='hidden' value={item.inc_img?1:0} />
98
+ <div className='litespeed-toggle-group'>
99
+ <label className='litespeed-toggle-btn litespeed-toggle-btn-primary litespeed-toggle-on'>{ litespeed_data[ 'lang' ][ 'on' ] }</label>
100
+ <label className='litespeed-toggle-btn litespeed-toggle-btn-default litespeed-toggle-active litespeed-toggle-off'>{ litespeed_data[ 'lang' ][ 'off' ] }</label>
101
+ <span className='litespeed-toggle-handle litespeed-toggle-btn litespeed-toggle-btn-default'></span>
102
+ </div>
103
+ </div>
104
+ </div>
105
+ <div className="litespeed-row litespeed-toggle-wrapper">
106
+ <div className="litespeed-cdn-mapping-inc litespeed-form-label litespeed-form-label--toggle">
107
+ { litespeed_data[ 'lang' ][ 'cdn_mapping_inc_css' ] }
108
+ </div>
109
+ <div className={`litespeed-toggle litespeed-toggle-btn litespeed-toggle-btn-${item.inc_css?'primary':'default litespeed-toggleoff'}`} data-type="inc_css" data-value={item.inc_css?0:1} onClick={this.onChange}>
110
+ <input name={ name_prefix + '[inc_css][]' } type='hidden' value={item.inc_css?1:0} />
111
+ <div className='litespeed-toggle-group'>
112
+ <label className='litespeed-toggle-btn litespeed-toggle-btn-primary litespeed-toggle-on'>{ litespeed_data[ 'lang' ][ 'on' ] }</label>
113
+ <label className='litespeed-toggle-btn litespeed-toggle-btn-default litespeed-toggle-active litespeed-toggle-off'>{ litespeed_data[ 'lang' ][ 'off' ] }</label>
114
+ <span className='litespeed-toggle-handle litespeed-toggle-btn litespeed-toggle-btn-default'></span>
115
+ </div>
116
+ </div>
117
+ </div>
118
+ <div className="litespeed-row litespeed-toggle-wrapper">
119
+ <div className="litespeed-cdn-mapping-inc litespeed-form-label litespeed-form-label--toggle">
120
+ { litespeed_data[ 'lang' ][ 'cdn_mapping_inc_js' ] }
121
+ </div>
122
+ <div className={`litespeed-toggle litespeed-toggle-btn litespeed-toggle-btn-${item.inc_js?'primary':'default litespeed-toggleoff'}`} data-type="inc_js" data-value={item.inc_js?0:1} onClick={this.onChange}>
123
+ <input name={ name_prefix + '[inc_js][]' } type='hidden' value={item.inc_js?1:0} />
124
+ <div className='litespeed-toggle-group'>
125
+ <label className='litespeed-toggle-btn litespeed-toggle-btn-primary litespeed-toggle-on'>{ litespeed_data[ 'lang' ][ 'on' ] }</label>
126
+ <label className='litespeed-toggle-btn litespeed-toggle-btn-default litespeed-toggle-active litespeed-toggle-off'>{ litespeed_data[ 'lang' ][ 'off' ] }</label>
127
+ <span className='litespeed-toggle-handle litespeed-toggle-btn litespeed-toggle-btn-default'></span>
128
+ </div>
129
+ </div>
130
+ </div>
131
+ </div>
132
+
133
+ <div className="litespeed-col-auto">
134
+ <label className="litespeed-form-label">
135
+ { litespeed_data[ 'lang' ][ 'cdn_mapping_filetype' ] }
136
+ </label>
137
+ <textarea name={ name_prefix + '[filetype][]' } rows={filetype.split("\n").length+2} cols='18' value={ filetype } data-type="filetype" onChange={this.onChange} />
138
+ </div>
139
+
140
+ <div className="litespeed-col-auto">
141
+ <button type="button" className="button button-link litespeed-collection-button litespeed-danger" onClick={this.delRow}>
142
+ <span className="dashicons dashicons-dismiss"></span>
143
+ <span className="screen-reader-text">{ litespeed_data[ 'lang' ][ 'cdn_mapping_remove' ] }</span>
144
+ </button>
145
+ </div>
146
+ </div>
147
+ );
148
+ }
149
+ }
assets/js/component.crawler.js CHANGED
@@ -54,6 +54,7 @@ class CrawlerSimulate extends React.Component {
54
  }
55
  }
56
 
 
57
  class SimulationBlock extends React.Component {
58
  constructor( props ) {
59
  super( props );
@@ -80,7 +81,7 @@ class SimulationBlock extends React.Component {
80
  </div>
81
  <div className="litespeed-col-auto">
82
  <label className="litespeed-form-label">{ litespeed_data[ 'lang' ][ 'cookie_values' ] }</label>
83
- <textarea rows="5" cols="40" name={ litespeed_data[ 'ids' ][ 'crawler_cookies' ] + '[vals][]' } placeholder={ litespeed_data[ 'lang' ][ 'one_per_line' ] } value={item.vals} data-type="vals" onChange={this.handleInputChange} />
84
  </div>
85
  <div className="litespeed-col-auto">
86
  <button type="button" className="button button-link litespeed-collection-button litespeed-danger" onClick={this.delRow}>
54
  }
55
  }
56
 
57
+ // { name: '', vals: '' }
58
  class SimulationBlock extends React.Component {
59
  constructor( props ) {
60
  super( props );
81
  </div>
82
  <div className="litespeed-col-auto">
83
  <label className="litespeed-form-label">{ litespeed_data[ 'lang' ][ 'cookie_values' ] }</label>
84
+ <textarea rows="5" cols="40" name={ litespeed_data[ 'ids' ][ 'crawler_cookies' ] + '[vals][]' } placeholder={ litespeed_data[ 'lang' ][ 'one_per_line' ] } value={ Array.isArray(item.vals) ? item.vals.join("\n") : item.vals } data-type="vals" onChange={this.handleInputChange} />
85
  </div>
86
  <div className="litespeed-col-auto">
87
  <button type="button" className="button button-link litespeed-collection-button litespeed-danger" onClick={this.delRow}>
assets/js/litespeed-cache-admin.js CHANGED
@@ -136,57 +136,6 @@ var _litespeed_dots ;
136
  $.get( litespeed_data.ajax_url_promo ) ;
137
  } ) ;
138
 
139
- /** CDN mapping **/
140
- $( '#litespeed-cdn-mapping-add' ).click(function(event) {
141
- var cloned_item = $( '[data-litespeed-cdn-mapping]:last' ).clone() ;
142
- cloned_item.find( 'input[type=text]' ).val( '' ) ;
143
- cloned_item.find( 'textarea' ).val( '' ) ;
144
- cloned_item.find( 'input[type="hidden"]' ).val( 0 ) ;
145
-
146
- var toggle_items = cloned_item.find( '[data-litespeed-toggle-on]' ) ;
147
-
148
- var cls_off = 'litespeed-toggle-btn-' + toggle_items.data( 'litespeed-toggle-off' ) + ' litespeed-toggleoff' ;
149
- var cls_on = 'litespeed-toggle-btn-' + toggle_items.data( 'litespeed-toggle-on' ) ;
150
-
151
- toggle_items.removeClass( cls_on ).addClass( cls_off ) ;
152
-
153
- cloned_item.insertAfter( '[data-litespeed-cdn-mapping]:last' ).hide().fadeIn() ;
154
-
155
- litespeed_toggle() ;
156
- litespeed_cdn_mapping_del_init() ;
157
- });
158
-
159
- /** toggle switch **/
160
- litespeed_toggle() ;
161
- litespeed_cdn_mapping_del_init() ;
162
-
163
- function litespeed_cdn_mapping_del_init() {
164
- $( '[data-litespeed-cdn-mapping-del]' ).off().click(function(event) {
165
- if ( ! confirm( 'Are you sure?' ) ) {
166
- return false;
167
- }
168
- $( this ).closest( '[data-litespeed-cdn-mapping]' ).fadeOut( 400, function(){
169
- $( this ).remove() ;
170
- } ) ;
171
- });
172
-
173
- }
174
-
175
- function litespeed_toggle() {
176
- $( '[data-litespeed-toggle-on]' ).off().click(function(event) {
177
- var cls_off = 'litespeed-toggle-btn-' + $( this ).data( 'litespeed-toggle-off' ) + ' litespeed-toggleoff' ;
178
- var cls_on = 'litespeed-toggle-btn-' + $( this ).data( 'litespeed-toggle-on' ) ;
179
- if ( $( this ).children( 'input' ).val() * 1 ) {
180
- $( this ).addClass( cls_off ).removeClass( cls_on ) ;
181
- $( this ).children( 'input' ).val( 0 ) ;
182
- }
183
- else {
184
- $( this ).removeClass( cls_off ).addClass( cls_on ) ;
185
- $( this ).children( 'input' ).val( 1 ) ;
186
- }
187
- });
188
- }
189
-
190
  /**
191
  * Human readable time conversation
192
  * @since 3.0
136
  $.get( litespeed_data.ajax_url_promo ) ;
137
  } ) ;
138
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
  /**
140
  * Human readable time conversation
141
  * @since 3.0
data/const.default.ini CHANGED
@@ -596,8 +596,6 @@ cdn-ori_dir = ''
596
 
597
  cdn-exc = ''
598
 
599
- cdn-remote_jq = false
600
-
601
  cdn-quic = false
602
 
603
  cdn-quic_email = ''
596
 
597
  cdn-exc = ''
598
 
 
 
599
  cdn-quic = false
600
 
601
  cdn-quic_email = ''
data/css_excludes.txt CHANGED
@@ -1,6 +1,6 @@
1
  # Predefined list for excluding CSS files or inline CSS codes #
2
  # Comment can use `# `(there is a space following), or `##`, can use both as a new line or end of one line
3
- # If you want to predefine new items, please send a Pull Request to https://github.com/litespeedtech/lscache_wp/blob/master/data/css_excludes.txt We will merge into next plugin release
4
 
5
  # CSS file URL excludes
6
 
1
  # Predefined list for excluding CSS files or inline CSS codes #
2
  # Comment can use `# `(there is a space following), or `##`, can use both as a new line or end of one line
3
+ # If you want to predefine new items, please send a Pull Request to https://github.com/litespeedtech/lscache_wp/blob/dev/data/css_excludes.txt We will merge into next plugin release
4
 
5
  # CSS file URL excludes
6
 
data/esi.nonces.txt CHANGED
@@ -1,4 +1,4 @@
1
- ## To predefine more list, please submit a PR to https://github.com/litespeedtech/lscache_wp/blob/master/data/esi.nonces.txt
2
  ## Comment Format:
3
  ## 1. `# this is comment`
4
  ## 2. `##this is comment`
1
+ ## To predefine more list, please submit a PR to https://github.com/litespeedtech/lscache_wp/blob/dev/data/esi.nonces.txt
2
  ## Comment Format:
3
  ## 1. `# this is comment`
4
  ## 2. `##this is comment`
data/js_defer_excludes.txt CHANGED
@@ -1,6 +1,6 @@
1
  # Predefined list for excluding deferred JS files or inline JS codes #
2
  # Comment can use `# `(there is a space following), or `##`, can use both as a new line or end of one line
3
- # If you want to predefine new items, please send a Pull Request to https://github.com/litespeedtech/lscache_wp/blob/master/data/js_defer_excludes.txt We will merge into next plugin release
4
 
5
 
6
  # JS file URL excludes
1
  # Predefined list for excluding deferred JS files or inline JS codes #
2
  # Comment can use `# `(there is a space following), or `##`, can use both as a new line or end of one line
3
+ # If you want to predefine new items, please send a Pull Request to https://github.com/litespeedtech/lscache_wp/blob/dev/data/js_defer_excludes.txt We will merge into next plugin release
4
 
5
 
6
  # JS file URL excludes
data/js_excludes.txt CHANGED
@@ -1,6 +1,6 @@
1
  # Predefined list for excluding JS files or inline JS codes #
2
  # Comment can use `# `(there is a space following), or `##`, can use both as a new line or end of one line
3
- # If you want to predefine new items, please send a Pull Request to https://github.com/litespeedtech/lscache_wp/blob/master/data/js_excludes.txt We will merge into next plugin release
4
 
5
  # JS file URL excludes
6
  maps-api-ssl.google.com
@@ -17,3 +17,5 @@ dataLayer
17
  adsbygoogle
18
 
19
  block_tdi_ ## Theme: Newspaper by tagDiv.com
 
 
1
  # Predefined list for excluding JS files or inline JS codes #
2
  # Comment can use `# `(there is a space following), or `##`, can use both as a new line or end of one line
3
+ # If you want to predefine new items, please send a Pull Request to https://github.com/litespeedtech/lscache_wp/blob/dev/data/js_excludes.txt We will merge into next plugin release
4
 
5
  # JS file URL excludes
6
  maps-api-ssl.google.com
17
  adsbygoogle
18
 
19
  block_tdi_ ## Theme: Newspaper by tagDiv.com
20
+
21
+ data-view-breakpoint-pointer ## Plugin: The Events Calendar by Modern Tribe (https://theeventscalendar.com/)
lang/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 3.6\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/litespeed-cache\n"
7
- "POT-Creation-Date: 2020-11-23 20:59:38+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -49,7 +49,7 @@ msgstr ""
49
  msgid "Cache"
50
  msgstr ""
51
 
52
- #: src/admin-display.cls.php:127 tpl/cdn/settings.tpl.php:253
53
  msgid "CDN"
54
  msgstr ""
55
 
@@ -66,7 +66,7 @@ msgstr ""
66
  msgid "Database"
67
  msgstr ""
68
 
69
- #: src/admin-display.cls.php:135 src/lang.cls.php:211
70
  msgid "Crawler"
71
  msgstr ""
72
 
@@ -78,7 +78,7 @@ msgstr ""
78
  msgid "Cookie Name"
79
  msgstr ""
80
 
81
- #: src/admin-display.cls.php:212 tpl/crawler/settings-simulation.tpl.php:69
82
  msgid "Cookie Values"
83
  msgstr ""
84
 
@@ -90,20 +90,21 @@ msgstr ""
90
  msgid "Add new cookie to simulate"
91
  msgstr ""
92
 
93
- #: src/admin-display.cls.php:257 src/gui.cls.php:586
94
- msgid "Settings"
95
  msgstr ""
96
 
97
- #: src/admin-display.cls.php:422
98
- msgid "Dismiss"
99
  msgstr ""
100
 
101
- #: src/admin-display.cls.php:650
102
- msgid "Save Changes"
103
  msgstr ""
104
 
105
- #: src/admin-display.cls.php:775 src/admin-display.cls.php:810
106
- #: src/admin-display.cls.php:861 tpl/cache/settings-cache.tpl.php:19
 
107
  #: tpl/cache/settings_inc.cache_mobile.tpl.php:70 tpl/cdn/settings.tpl.php:49
108
  #: tpl/page_optm/settings_css.tpl.php:149
109
  #: tpl/page_optm/settings_css.tpl.php:166
@@ -113,81 +114,93 @@ msgstr ""
113
  msgid "ON"
114
  msgstr ""
115
 
116
- #: src/admin-display.cls.php:776 src/admin-display.cls.php:809
117
- #: src/admin-display.cls.php:861 tpl/cache/settings-cache.tpl.php:19
 
118
  #: tpl/cache/settings_inc.object.tpl.php:210 tpl/cdn/settings.tpl.php:49
119
- #: tpl/cdn/settings.tpl.php:237 tpl/page_optm/settings_css.tpl.php:83
120
- #: tpl/page_optm/settings_css.tpl.php:166
121
  #: tpl/page_optm/settings_css.tpl.php:181
122
  #: tpl/page_optm/settings_media.tpl.php:159
123
  #: tpl/toolbox/settings-debug.tpl.php:34
124
  msgid "OFF"
125
  msgstr ""
126
 
127
- #: src/admin-display.cls.php:873
 
 
 
 
 
 
 
 
 
 
 
 
128
  msgid "This setting is overwritten by the PHP constant %s"
129
  msgstr ""
130
 
131
- #: src/admin-display.cls.php:876
132
  msgid "This setting is overwritten by the primary site setting"
133
  msgstr ""
134
 
135
- #: src/admin-display.cls.php:879
136
  msgid "This setting is overwritten by the Network setting"
137
  msgstr ""
138
 
139
- #: src/admin-display.cls.php:883
140
  msgid "currently set to %s"
141
  msgstr ""
142
 
143
- #: src/admin-display.cls.php:893 tpl/cache/settings_inc.object.tpl.php:103
144
  #: tpl/crawler/settings-general.tpl.php:60
145
  #: tpl/crawler/settings-general.tpl.php:74
146
  #: tpl/crawler/settings-general.tpl.php:89 tpl/esi_widget_edit.php:70
147
  msgid "seconds"
148
  msgstr ""
149
 
150
- #: src/admin-display.cls.php:924 src/admin-display.cls.php:929
151
  msgid "Recommended value"
152
  msgstr ""
153
 
154
- #: src/admin-display.cls.php:953
155
  msgid "Invalid rewrite rule"
156
  msgstr ""
157
 
158
- #: src/admin-display.cls.php:970
159
  msgid "Path must end with %s"
160
  msgstr ""
161
 
162
- #: src/admin-display.cls.php:988
163
  msgid "Minimum value"
164
  msgstr ""
165
 
166
- #: src/admin-display.cls.php:991
167
  msgid "Maximum value"
168
  msgstr ""
169
 
170
- #: src/admin-display.cls.php:1003
171
  msgid "Zero, or"
172
  msgstr ""
173
 
174
- #: src/admin-display.cls.php:1010
175
  msgid "Larger than"
176
  msgstr ""
177
 
178
- #: src/admin-display.cls.php:1013
179
  msgid "Smaller than"
180
  msgstr ""
181
 
182
- #: src/admin-display.cls.php:1016
183
  msgid "Value range"
184
  msgstr ""
185
 
186
- #: src/admin-display.cls.php:1041
187
  msgid "Invalid IP"
188
  msgstr ""
189
 
190
- #: src/admin-display.cls.php:1061 tpl/cache/settings-esi.tpl.php:95
191
  #: tpl/page_optm/settings_css.tpl.php:151
192
  #: tpl/page_optm/settings_html.tpl.php:86
193
  #: tpl/page_optm/settings_media_exc.tpl.php:25
@@ -197,43 +210,43 @@ msgstr ""
197
  msgid "API"
198
  msgstr ""
199
 
200
- #: src/admin-display.cls.php:1062
201
  msgid "Server variable(s) %s available to override this setting."
202
  msgstr ""
203
 
204
- #: src/admin-display.cls.php:1074
205
  msgid "The URLs will be compared to the REQUEST_URI server variable."
206
  msgstr ""
207
 
208
- #: src/admin-display.cls.php:1075
209
  msgid "For example, for %s, %s can be used here."
210
  msgstr ""
211
 
212
- #: src/admin-display.cls.php:1077
213
  msgid "To match the beginning, add %s to the beginning of the item."
214
  msgstr ""
215
 
216
- #: src/admin-display.cls.php:1078
217
  msgid "To do an exact match, add %s to the end of the URL."
218
  msgstr ""
219
 
220
- #: src/admin-display.cls.php:1079 src/doc.cls.php:61
221
  msgid "One per line."
222
  msgstr ""
223
 
224
- #: src/admin-display.cls.php:1093
225
  msgid "%s groups"
226
  msgstr ""
227
 
228
- #: src/admin-display.cls.php:1096
229
  msgid "%s images"
230
  msgstr ""
231
 
232
- #: src/admin-display.cls.php:1106
233
  msgid "%s group"
234
  msgstr ""
235
 
236
- #: src/admin-display.cls.php:1109
237
  msgid "%s image"
238
  msgstr ""
239
 
@@ -346,15 +359,15 @@ msgstr ""
346
  msgid "Notified LiteSpeed Web Server to purge the list."
347
  msgstr ""
348
 
349
- #: src/crawler-map.cls.php:266
350
  msgid "Sitemap cleaned successfully"
351
  msgstr ""
352
 
353
- #: src/crawler-map.cls.php:318
354
  msgid "No valid sitemap parsed for crawler."
355
  msgstr ""
356
 
357
- #: src/crawler-map.cls.php:322
358
  msgid "Sitemap created successfully: %d items"
359
  msgstr ""
360
 
@@ -733,7 +746,7 @@ msgstr ""
733
  msgid "LiteSpeed Cache Purge All"
734
  msgstr ""
735
 
736
- #: src/gui.cls.php:578 tpl/cdn/entry.tpl.php:7 tpl/cdn/settings.tpl.php:253
737
  #: tpl/db_optm/entry.tpl.php:6
738
  msgid "Manage"
739
  msgstr ""
@@ -1495,7 +1508,7 @@ msgstr ""
1495
  msgid "Include JS"
1496
  msgstr ""
1497
 
1498
- #: src/lang.cls.php:203 tpl/cdn/settings.tpl.php:148
1499
  msgid "Include File Types"
1500
  msgstr ""
1501
 
@@ -1516,102 +1529,98 @@ msgid "Exclude Path"
1516
  msgstr ""
1517
 
1518
  #: src/lang.cls.php:208
1519
- msgid "Load JQuery Remotely"
1520
- msgstr ""
1521
-
1522
- #: src/lang.cls.php:209
1523
  msgid "Cloudflare API"
1524
  msgstr ""
1525
 
1526
- #: src/lang.cls.php:212
1527
  msgid "Delay"
1528
  msgstr ""
1529
 
1530
- #: src/lang.cls.php:213
1531
  msgid "Run Duration"
1532
  msgstr ""
1533
 
1534
- #: src/lang.cls.php:214
1535
  msgid "Interval Between Runs"
1536
  msgstr ""
1537
 
1538
- #: src/lang.cls.php:215
1539
  msgid "Crawl Interval"
1540
  msgstr ""
1541
 
1542
- #: src/lang.cls.php:216
1543
  msgid "Threads"
1544
  msgstr ""
1545
 
1546
- #: src/lang.cls.php:217
1547
  msgid "Timeout"
1548
  msgstr ""
1549
 
1550
- #: src/lang.cls.php:218
1551
  msgid "Server Load Limit"
1552
  msgstr ""
1553
 
1554
- #: src/lang.cls.php:219
1555
  msgid "Role Simulation"
1556
  msgstr ""
1557
 
1558
- #: src/lang.cls.php:220
1559
  msgid "Cookie Simulation"
1560
  msgstr ""
1561
 
1562
- #: src/lang.cls.php:221
1563
  msgid "Custom Sitemap"
1564
  msgstr ""
1565
 
1566
- #: src/lang.cls.php:222
1567
  msgid "Drop Domain from Sitemap"
1568
  msgstr ""
1569
 
1570
- #: src/lang.cls.php:223
1571
  msgid "Sitemap Timeout"
1572
  msgstr ""
1573
 
1574
- #: src/lang.cls.php:225 tpl/inc/disabled_all.php:5
1575
  msgid "Disable All Features"
1576
  msgstr ""
1577
 
1578
- #: src/lang.cls.php:226 tpl/toolbox/log_viewer.tpl.php:7
1579
  msgid "Debug Log"
1580
  msgstr ""
1581
 
1582
- #: src/lang.cls.php:227
1583
  msgid "Admin IPs"
1584
  msgstr ""
1585
 
1586
- #: src/lang.cls.php:228
1587
  msgid "Debug Level"
1588
  msgstr ""
1589
 
1590
- #: src/lang.cls.php:229
1591
  msgid "Log File Size Limit"
1592
  msgstr ""
1593
 
1594
- #: src/lang.cls.php:230
1595
  msgid "Log Cookies"
1596
  msgstr ""
1597
 
1598
- #: src/lang.cls.php:231
1599
  msgid "Collapse Query Strings"
1600
  msgstr ""
1601
 
1602
- #: src/lang.cls.php:232
1603
  msgid "Debug URI Includes"
1604
  msgstr ""
1605
 
1606
- #: src/lang.cls.php:233
1607
  msgid "Debug URI Excludes"
1608
  msgstr ""
1609
 
1610
- #: src/lang.cls.php:235
1611
  msgid "Revisions Max Number"
1612
  msgstr ""
1613
 
1614
- #: src/lang.cls.php:236
1615
  msgid "Revisions Max Age"
1616
  msgstr ""
1617
 
@@ -1915,7 +1924,7 @@ msgstr ""
1915
  msgid "Dismiss this notice"
1916
  msgstr ""
1917
 
1918
- #. #-#-#-#-# litespeed-cache.pot (LiteSpeed Cache 3.6) #-#-#-#-#
1919
  #. Plugin Name of the plugin/theme
1920
  #: tpl/banner/new_version.php:59 tpl/banner/new_version_dev.tpl.php:12
1921
  #: tpl/cache/more_settings_tip.tpl.php:15 tpl/inc/admin_footer.php:8
@@ -1931,7 +1940,7 @@ msgid "New release %s is available now."
1931
  msgstr ""
1932
 
1933
  #: tpl/banner/new_version.php:71 tpl/banner/new_version_dev.tpl.php:24
1934
- #: tpl/toolbox/beta_test.tpl.php:44
1935
  msgid "Upgrade"
1936
  msgstr ""
1937
 
@@ -2054,7 +2063,7 @@ msgstr ""
2054
 
2055
  #: tpl/cache/more_settings_tip.tpl.php:12
2056
  #: tpl/cache/settings-excludes.tpl.php:62
2057
- #: tpl/cache/settings-excludes.tpl.php:95 tpl/cdn/settings.tpl.php:124
2058
  #: tpl/crawler/settings-general.tpl.php:39
2059
  #: tpl/crawler/settings-general.tpl.php:140
2060
  #: tpl/crawler/settings-general.tpl.php:145
@@ -2291,7 +2300,7 @@ msgid ""
2291
  msgstr ""
2292
 
2293
  #: tpl/cache/settings-esi.tpl.php:107 tpl/cache/settings-purge.tpl.php:110
2294
- #: tpl/cdn/settings.tpl.php:189
2295
  msgid ""
2296
  "Wildcard %1$s supported (match zero or more characters). For example, to "
2297
  "match %2$s and %3$s, use %4$s."
@@ -2837,129 +2846,111 @@ msgid ""
2837
  "%2$s."
2838
  msgstr ""
2839
 
2840
- #: tpl/cdn/settings.tpl.php:66
2841
- msgid "Remove CDN URL"
2842
- msgstr ""
2843
-
2844
  #: tpl/cdn/settings.tpl.php:74
2845
- msgid "CDN URL to be used. For example, %s"
2846
- msgstr ""
2847
-
2848
- #: tpl/cdn/settings.tpl.php:120
2849
- msgid "Add new CDN URL"
2850
- msgstr ""
2851
-
2852
- #: tpl/cdn/settings.tpl.php:125
2853
  msgid ""
2854
  "To randomize CDN hostname, define multiple hostnames for the same resources."
2855
  msgstr ""
2856
 
2857
- #: tpl/cdn/settings.tpl.php:130
2858
  msgid ""
2859
  "Serve all image files through the CDN. This will affect all attachments, "
2860
  "HTML %s tags, and CSS %s attributes."
2861
  msgstr ""
2862
 
2863
- #: tpl/cdn/settings.tpl.php:134
2864
  msgid ""
2865
  "Serve all CSS files through the CDN. This will affect all enqueued WP CSS "
2866
  "files."
2867
  msgstr ""
2868
 
2869
- #: tpl/cdn/settings.tpl.php:138
2870
  msgid ""
2871
  "Serve all JavaScript files through the CDN. This will affect all enqueued WP "
2872
  "JavaScript files."
2873
  msgstr ""
2874
 
2875
- #: tpl/cdn/settings.tpl.php:142
2876
  msgid "Static file type links to be replaced by CDN links."
2877
  msgstr ""
2878
 
2879
- #: tpl/cdn/settings.tpl.php:144
2880
  msgid "This will affect all tags containing attributes: %s %s %s."
2881
  msgstr ""
2882
 
2883
- #: tpl/cdn/settings.tpl.php:145
2884
  msgid "Default value"
2885
  msgstr ""
2886
 
2887
- #: tpl/cdn/settings.tpl.php:148
2888
  msgid ""
2889
  "If you turn any of the above settings OFF, please remove the related file "
2890
  "types from the %s box."
2891
  msgstr ""
2892
 
2893
- #: tpl/cdn/settings.tpl.php:172
2894
  msgid ""
2895
  "Specify which HTML element attributes will be replaced with CDN Mapping."
2896
  msgstr ""
2897
 
2898
- #: tpl/cdn/settings.tpl.php:173 tpl/img_optm/settings.tpl.php:140
2899
  msgid "Only attributes listed here will be replaced."
2900
  msgstr ""
2901
 
2902
- #: tpl/cdn/settings.tpl.php:174 tpl/img_optm/settings.tpl.php:141
2903
  msgid "Use the format %1$s or %2$s (element is optional)."
2904
  msgstr ""
2905
 
2906
- #: tpl/cdn/settings.tpl.php:188
2907
  msgid ""
2908
  "Site URL to be served through the CDN. Beginning with %1$s. For example, "
2909
  "%2$s."
2910
  msgstr ""
2911
 
2912
- #: tpl/cdn/settings.tpl.php:211
2913
  msgid "Only files within these directories will be pointed to the CDN."
2914
  msgstr ""
2915
 
2916
- #: tpl/cdn/settings.tpl.php:225
2917
  msgid "Paths containing these strings will not be served from the CDN."
2918
  msgstr ""
2919
 
2920
- #: tpl/cdn/settings.tpl.php:239
2921
- msgid ""
2922
- "Improve page load time by loading jQuery from a remote CDN service instead "
2923
- "of locally."
2924
- msgstr ""
2925
-
2926
- #: tpl/cdn/settings.tpl.php:252
2927
  msgid "Use %s API functionality."
2928
  msgstr ""
2929
 
2930
- #: tpl/cdn/settings.tpl.php:253
2931
  msgid "This can be managed from <a %2$s>%1$s</a>."
2932
  msgstr ""
2933
 
2934
- #: tpl/cdn/settings.tpl.php:257
2935
  msgid "Email Address"
2936
  msgstr ""
2937
 
2938
- #: tpl/cdn/settings.tpl.php:261
2939
  msgid "Your Email address on %s."
2940
  msgstr ""
2941
 
2942
- #: tpl/cdn/settings.tpl.php:266
2943
  msgid "Global API Key"
2944
  msgstr ""
2945
 
2946
- #: tpl/cdn/settings.tpl.php:270
2947
  msgid "Your API key is used to access %s APIs."
2948
  msgstr ""
2949
 
2950
- #: tpl/cdn/settings.tpl.php:271
2951
  msgid "Get it from <a %1$s>%2$s</a>."
2952
  msgstr ""
2953
 
2954
- #: tpl/cdn/settings.tpl.php:276
2955
  msgid "Domain"
2956
  msgstr ""
2957
 
2958
- #: tpl/cdn/settings.tpl.php:284
2959
  msgid "You can just type part of the domain."
2960
  msgstr ""
2961
 
2962
- #: tpl/cdn/settings.tpl.php:285
2963
  msgid ""
2964
  "Once saved, it will be matched with the current list and completed "
2965
  "automatically."
@@ -3137,14 +3128,14 @@ msgid ""
3137
  "To crawl the site as a logged-in user, enter the user ids to be simulated."
3138
  msgstr ""
3139
 
3140
- #: tpl/crawler/settings-simulation.tpl.php:67
3141
  msgid ""
3142
  "To crawl for a particular cookie, enter the cookie name, and the values you "
3143
  "wish to crawl for. Values should be one per line, and can include a blank "
3144
  "line. There will be one crawler created per cookie value, per simulated role."
3145
  msgstr ""
3146
 
3147
- #: tpl/crawler/settings-simulation.tpl.php:69
3148
  msgid "Use %1$s in %2$s to indicate this cookie has not been set."
3149
  msgstr ""
3150
 
@@ -4787,37 +4778,45 @@ msgstr ""
4787
  msgid "Selected roles will be excluded from all optimizations."
4788
  msgstr ""
4789
 
4790
- #: tpl/toolbox/beta_test.tpl.php:20
4791
  msgid "Try GitHub Version"
4792
  msgstr ""
4793
 
4794
- #: tpl/toolbox/beta_test.tpl.php:24
4795
  msgid ""
4796
  "Use this section to switch plugin versions. To beta test a GitHub commit, "
4797
  "enter the commit URL in the field below."
4798
  msgstr ""
4799
 
4800
- #: tpl/toolbox/beta_test.tpl.php:25
4801
  msgid "Example"
4802
  msgstr ""
4803
 
4804
- #: tpl/toolbox/beta_test.tpl.php:29 tpl/toolbox/beta_test.tpl.php:41
4805
- msgid "Use latest GitHub commit"
 
 
 
 
4806
  msgstr ""
4807
 
4808
- #: tpl/toolbox/beta_test.tpl.php:31 tpl/toolbox/beta_test.tpl.php:42
4809
  msgid "Use latest WordPress release version"
4810
  msgstr ""
4811
 
4812
- #: tpl/toolbox/beta_test.tpl.php:31
4813
  msgid "OR"
4814
  msgstr ""
4815
 
4816
- #: tpl/toolbox/beta_test.tpl.php:41
4817
  msgid "Press the %s button to use the most recent GitHub commit."
4818
  msgstr ""
4819
 
4820
- #: tpl/toolbox/beta_test.tpl.php:42
 
 
 
 
4821
  msgid ""
4822
  "Press the %s button to stop beta testing and go back to the current release "
4823
  "from the WordPress Plugin Directory."
2
  # This file is distributed under the same license as the LiteSpeed Cache package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: LiteSpeed Cache 3.6.1\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/litespeed-cache\n"
7
+ "POT-Creation-Date: 2020-12-15 14:41:17+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
49
  msgid "Cache"
50
  msgstr ""
51
 
52
+ #: src/admin-display.cls.php:127 tpl/cdn/settings.tpl.php:189
53
  msgid "CDN"
54
  msgstr ""
55
 
66
  msgid "Database"
67
  msgstr ""
68
 
69
+ #: src/admin-display.cls.php:135 src/lang.cls.php:210
70
  msgid "Crawler"
71
  msgstr ""
72
 
78
  msgid "Cookie Name"
79
  msgstr ""
80
 
81
+ #: src/admin-display.cls.php:212 tpl/crawler/settings-simulation.tpl.php:51
82
  msgid "Cookie Values"
83
  msgstr ""
84
 
90
  msgid "Add new cookie to simulate"
91
  msgstr ""
92
 
93
+ #: src/admin-display.cls.php:234
94
+ msgid "CDN URL to be used. For example, %s"
95
  msgstr ""
96
 
97
+ #: src/admin-display.cls.php:236
98
+ msgid "Remove CDN URL"
99
  msgstr ""
100
 
101
+ #: src/admin-display.cls.php:237
102
+ msgid "Add new CDN URL"
103
  msgstr ""
104
 
105
+ #: src/admin-display.cls.php:238 src/admin-display.cls.php:799
106
+ #: src/admin-display.cls.php:834 src/admin-display.cls.php:885
107
+ #: tpl/cache/settings-cache.tpl.php:19
108
  #: tpl/cache/settings_inc.cache_mobile.tpl.php:70 tpl/cdn/settings.tpl.php:49
109
  #: tpl/page_optm/settings_css.tpl.php:149
110
  #: tpl/page_optm/settings_css.tpl.php:166
114
  msgid "ON"
115
  msgstr ""
116
 
117
+ #: src/admin-display.cls.php:239 src/admin-display.cls.php:800
118
+ #: src/admin-display.cls.php:833 src/admin-display.cls.php:885
119
+ #: tpl/cache/settings-cache.tpl.php:19
120
  #: tpl/cache/settings_inc.object.tpl.php:210 tpl/cdn/settings.tpl.php:49
121
+ #: tpl/page_optm/settings_css.tpl.php:83 tpl/page_optm/settings_css.tpl.php:166
 
122
  #: tpl/page_optm/settings_css.tpl.php:181
123
  #: tpl/page_optm/settings_media.tpl.php:159
124
  #: tpl/toolbox/settings-debug.tpl.php:34
125
  msgid "OFF"
126
  msgstr ""
127
 
128
+ #: src/admin-display.cls.php:281 src/gui.cls.php:586
129
+ msgid "Settings"
130
+ msgstr ""
131
+
132
+ #: src/admin-display.cls.php:446
133
+ msgid "Dismiss"
134
+ msgstr ""
135
+
136
+ #: src/admin-display.cls.php:674
137
+ msgid "Save Changes"
138
+ msgstr ""
139
+
140
+ #: src/admin-display.cls.php:897
141
  msgid "This setting is overwritten by the PHP constant %s"
142
  msgstr ""
143
 
144
+ #: src/admin-display.cls.php:900
145
  msgid "This setting is overwritten by the primary site setting"
146
  msgstr ""
147
 
148
+ #: src/admin-display.cls.php:903
149
  msgid "This setting is overwritten by the Network setting"
150
  msgstr ""
151
 
152
+ #: src/admin-display.cls.php:907
153
  msgid "currently set to %s"
154
  msgstr ""
155
 
156
+ #: src/admin-display.cls.php:917 tpl/cache/settings_inc.object.tpl.php:103
157
  #: tpl/crawler/settings-general.tpl.php:60
158
  #: tpl/crawler/settings-general.tpl.php:74
159
  #: tpl/crawler/settings-general.tpl.php:89 tpl/esi_widget_edit.php:70
160
  msgid "seconds"
161
  msgstr ""
162
 
163
+ #: src/admin-display.cls.php:948 src/admin-display.cls.php:953
164
  msgid "Recommended value"
165
  msgstr ""
166
 
167
+ #: src/admin-display.cls.php:977
168
  msgid "Invalid rewrite rule"
169
  msgstr ""
170
 
171
+ #: src/admin-display.cls.php:994
172
  msgid "Path must end with %s"
173
  msgstr ""
174
 
175
+ #: src/admin-display.cls.php:1012
176
  msgid "Minimum value"
177
  msgstr ""
178
 
179
+ #: src/admin-display.cls.php:1015
180
  msgid "Maximum value"
181
  msgstr ""
182
 
183
+ #: src/admin-display.cls.php:1027
184
  msgid "Zero, or"
185
  msgstr ""
186
 
187
+ #: src/admin-display.cls.php:1034
188
  msgid "Larger than"
189
  msgstr ""
190
 
191
+ #: src/admin-display.cls.php:1037
192
  msgid "Smaller than"
193
  msgstr ""
194
 
195
+ #: src/admin-display.cls.php:1040
196
  msgid "Value range"
197
  msgstr ""
198
 
199
+ #: src/admin-display.cls.php:1065
200
  msgid "Invalid IP"
201
  msgstr ""
202
 
203
+ #: src/admin-display.cls.php:1085 tpl/cache/settings-esi.tpl.php:95
204
  #: tpl/page_optm/settings_css.tpl.php:151
205
  #: tpl/page_optm/settings_html.tpl.php:86
206
  #: tpl/page_optm/settings_media_exc.tpl.php:25
210
  msgid "API"
211
  msgstr ""
212
 
213
+ #: src/admin-display.cls.php:1086
214
  msgid "Server variable(s) %s available to override this setting."
215
  msgstr ""
216
 
217
+ #: src/admin-display.cls.php:1098
218
  msgid "The URLs will be compared to the REQUEST_URI server variable."
219
  msgstr ""
220
 
221
+ #: src/admin-display.cls.php:1099
222
  msgid "For example, for %s, %s can be used here."
223
  msgstr ""
224
 
225
+ #: src/admin-display.cls.php:1101
226
  msgid "To match the beginning, add %s to the beginning of the item."
227
  msgstr ""
228
 
229
+ #: src/admin-display.cls.php:1102
230
  msgid "To do an exact match, add %s to the end of the URL."
231
  msgstr ""
232
 
233
+ #: src/admin-display.cls.php:1103 src/doc.cls.php:61
234
  msgid "One per line."
235
  msgstr ""
236
 
237
+ #: src/admin-display.cls.php:1117
238
  msgid "%s groups"
239
  msgstr ""
240
 
241
+ #: src/admin-display.cls.php:1120
242
  msgid "%s images"
243
  msgstr ""
244
 
245
+ #: src/admin-display.cls.php:1130
246
  msgid "%s group"
247
  msgstr ""
248
 
249
+ #: src/admin-display.cls.php:1133
250
  msgid "%s image"
251
  msgstr ""
252
 
359
  msgid "Notified LiteSpeed Web Server to purge the list."
360
  msgstr ""
361
 
362
+ #: src/crawler-map.cls.php:267
363
  msgid "Sitemap cleaned successfully"
364
  msgstr ""
365
 
366
+ #: src/crawler-map.cls.php:319
367
  msgid "No valid sitemap parsed for crawler."
368
  msgstr ""
369
 
370
+ #: src/crawler-map.cls.php:323
371
  msgid "Sitemap created successfully: %d items"
372
  msgstr ""
373
 
746
  msgid "LiteSpeed Cache Purge All"
747
  msgstr ""
748
 
749
+ #: src/gui.cls.php:578 tpl/cdn/entry.tpl.php:7 tpl/cdn/settings.tpl.php:189
750
  #: tpl/db_optm/entry.tpl.php:6
751
  msgid "Manage"
752
  msgstr ""
1508
  msgid "Include JS"
1509
  msgstr ""
1510
 
1511
+ #: src/lang.cls.php:203 tpl/cdn/settings.tpl.php:97
1512
  msgid "Include File Types"
1513
  msgstr ""
1514
 
1529
  msgstr ""
1530
 
1531
  #: src/lang.cls.php:208
 
 
 
 
1532
  msgid "Cloudflare API"
1533
  msgstr ""
1534
 
1535
+ #: src/lang.cls.php:211
1536
  msgid "Delay"
1537
  msgstr ""
1538
 
1539
+ #: src/lang.cls.php:212
1540
  msgid "Run Duration"
1541
  msgstr ""
1542
 
1543
+ #: src/lang.cls.php:213
1544
  msgid "Interval Between Runs"
1545
  msgstr ""
1546
 
1547
+ #: src/lang.cls.php:214
1548
  msgid "Crawl Interval"
1549
  msgstr ""
1550
 
1551
+ #: src/lang.cls.php:215
1552
  msgid "Threads"
1553
  msgstr ""
1554
 
1555
+ #: src/lang.cls.php:216
1556
  msgid "Timeout"
1557
  msgstr ""
1558
 
1559
+ #: src/lang.cls.php:217
1560
  msgid "Server Load Limit"
1561
  msgstr ""
1562
 
1563
+ #: src/lang.cls.php:218
1564
  msgid "Role Simulation"
1565
  msgstr ""
1566
 
1567
+ #: src/lang.cls.php:219
1568
  msgid "Cookie Simulation"
1569
  msgstr ""
1570
 
1571
+ #: src/lang.cls.php:220
1572
  msgid "Custom Sitemap"
1573
  msgstr ""
1574
 
1575
+ #: src/lang.cls.php:221
1576
  msgid "Drop Domain from Sitemap"
1577
  msgstr ""
1578
 
1579
+ #: src/lang.cls.php:222
1580
  msgid "Sitemap Timeout"
1581
  msgstr ""
1582
 
1583
+ #: src/lang.cls.php:224 tpl/inc/disabled_all.php:5
1584
  msgid "Disable All Features"
1585
  msgstr ""
1586
 
1587
+ #: src/lang.cls.php:225 tpl/toolbox/log_viewer.tpl.php:7
1588
  msgid "Debug Log"
1589
  msgstr ""
1590
 
1591
+ #: src/lang.cls.php:226
1592
  msgid "Admin IPs"
1593
  msgstr ""
1594
 
1595
+ #: src/lang.cls.php:227
1596
  msgid "Debug Level"
1597
  msgstr ""
1598
 
1599
+ #: src/lang.cls.php:228
1600
  msgid "Log File Size Limit"
1601
  msgstr ""
1602
 
1603
+ #: src/lang.cls.php:229
1604
  msgid "Log Cookies"
1605
  msgstr ""
1606
 
1607
+ #: src/lang.cls.php:230
1608
  msgid "Collapse Query Strings"
1609
  msgstr ""
1610
 
1611
+ #: src/lang.cls.php:231
1612
  msgid "Debug URI Includes"
1613
  msgstr ""
1614
 
1615
+ #: src/lang.cls.php:232
1616
  msgid "Debug URI Excludes"
1617
  msgstr ""
1618
 
1619
+ #: src/lang.cls.php:234
1620
  msgid "Revisions Max Number"
1621
  msgstr ""
1622
 
1623
+ #: src/lang.cls.php:235
1624
  msgid "Revisions Max Age"
1625
  msgstr ""
1626
 
1924
  msgid "Dismiss this notice"
1925
  msgstr ""
1926
 
1927
+ #. #-#-#-#-# litespeed-cache.pot (LiteSpeed Cache 3.6.1) #-#-#-#-#
1928
  #. Plugin Name of the plugin/theme
1929
  #: tpl/banner/new_version.php:59 tpl/banner/new_version_dev.tpl.php:12
1930
  #: tpl/cache/more_settings_tip.tpl.php:15 tpl/inc/admin_footer.php:8
1940
  msgstr ""
1941
 
1942
  #: tpl/banner/new_version.php:71 tpl/banner/new_version_dev.tpl.php:24
1943
+ #: tpl/toolbox/beta_test.tpl.php:48
1944
  msgid "Upgrade"
1945
  msgstr ""
1946
 
2063
 
2064
  #: tpl/cache/more_settings_tip.tpl.php:12
2065
  #: tpl/cache/settings-excludes.tpl.php:62
2066
+ #: tpl/cache/settings-excludes.tpl.php:95 tpl/cdn/settings.tpl.php:73
2067
  #: tpl/crawler/settings-general.tpl.php:39
2068
  #: tpl/crawler/settings-general.tpl.php:140
2069
  #: tpl/crawler/settings-general.tpl.php:145
2300
  msgstr ""
2301
 
2302
  #: tpl/cache/settings-esi.tpl.php:107 tpl/cache/settings-purge.tpl.php:110
2303
+ #: tpl/cdn/settings.tpl.php:138
2304
  msgid ""
2305
  "Wildcard %1$s supported (match zero or more characters). For example, to "
2306
  "match %2$s and %3$s, use %4$s."
2846
  "%2$s."
2847
  msgstr ""
2848
 
 
 
 
 
2849
  #: tpl/cdn/settings.tpl.php:74
 
 
 
 
 
 
 
 
2850
  msgid ""
2851
  "To randomize CDN hostname, define multiple hostnames for the same resources."
2852
  msgstr ""
2853
 
2854
+ #: tpl/cdn/settings.tpl.php:79
2855
  msgid ""
2856
  "Serve all image files through the CDN. This will affect all attachments, "
2857
  "HTML %s tags, and CSS %s attributes."
2858
  msgstr ""
2859
 
2860
+ #: tpl/cdn/settings.tpl.php:83
2861
  msgid ""
2862
  "Serve all CSS files through the CDN. This will affect all enqueued WP CSS "
2863
  "files."
2864
  msgstr ""
2865
 
2866
+ #: tpl/cdn/settings.tpl.php:87
2867
  msgid ""
2868
  "Serve all JavaScript files through the CDN. This will affect all enqueued WP "
2869
  "JavaScript files."
2870
  msgstr ""
2871
 
2872
+ #: tpl/cdn/settings.tpl.php:91
2873
  msgid "Static file type links to be replaced by CDN links."
2874
  msgstr ""
2875
 
2876
+ #: tpl/cdn/settings.tpl.php:93
2877
  msgid "This will affect all tags containing attributes: %s %s %s."
2878
  msgstr ""
2879
 
2880
+ #: tpl/cdn/settings.tpl.php:94
2881
  msgid "Default value"
2882
  msgstr ""
2883
 
2884
+ #: tpl/cdn/settings.tpl.php:97
2885
  msgid ""
2886
  "If you turn any of the above settings OFF, please remove the related file "
2887
  "types from the %s box."
2888
  msgstr ""
2889
 
2890
+ #: tpl/cdn/settings.tpl.php:121
2891
  msgid ""
2892
  "Specify which HTML element attributes will be replaced with CDN Mapping."
2893
  msgstr ""
2894
 
2895
+ #: tpl/cdn/settings.tpl.php:122 tpl/img_optm/settings.tpl.php:140
2896
  msgid "Only attributes listed here will be replaced."
2897
  msgstr ""
2898
 
2899
+ #: tpl/cdn/settings.tpl.php:123 tpl/img_optm/settings.tpl.php:141
2900
  msgid "Use the format %1$s or %2$s (element is optional)."
2901
  msgstr ""
2902
 
2903
+ #: tpl/cdn/settings.tpl.php:137
2904
  msgid ""
2905
  "Site URL to be served through the CDN. Beginning with %1$s. For example, "
2906
  "%2$s."
2907
  msgstr ""
2908
 
2909
+ #: tpl/cdn/settings.tpl.php:160
2910
  msgid "Only files within these directories will be pointed to the CDN."
2911
  msgstr ""
2912
 
2913
+ #: tpl/cdn/settings.tpl.php:174
2914
  msgid "Paths containing these strings will not be served from the CDN."
2915
  msgstr ""
2916
 
2917
+ #: tpl/cdn/settings.tpl.php:188
 
 
 
 
 
 
2918
  msgid "Use %s API functionality."
2919
  msgstr ""
2920
 
2921
+ #: tpl/cdn/settings.tpl.php:189
2922
  msgid "This can be managed from <a %2$s>%1$s</a>."
2923
  msgstr ""
2924
 
2925
+ #: tpl/cdn/settings.tpl.php:193
2926
  msgid "Email Address"
2927
  msgstr ""
2928
 
2929
+ #: tpl/cdn/settings.tpl.php:197
2930
  msgid "Your Email address on %s."
2931
  msgstr ""
2932
 
2933
+ #: tpl/cdn/settings.tpl.php:202
2934
  msgid "Global API Key"
2935
  msgstr ""
2936
 
2937
+ #: tpl/cdn/settings.tpl.php:206
2938
  msgid "Your API key is used to access %s APIs."
2939
  msgstr ""
2940
 
2941
+ #: tpl/cdn/settings.tpl.php:207
2942
  msgid "Get it from <a %1$s>%2$s</a>."
2943
  msgstr ""
2944
 
2945
+ #: tpl/cdn/settings.tpl.php:212
2946
  msgid "Domain"
2947
  msgstr ""
2948
 
2949
+ #: tpl/cdn/settings.tpl.php:220
2950
  msgid "You can just type part of the domain."
2951
  msgstr ""
2952
 
2953
+ #: tpl/cdn/settings.tpl.php:221
2954
  msgid ""
2955
  "Once saved, it will be matched with the current list and completed "
2956
  "automatically."
3128
  "To crawl the site as a logged-in user, enter the user ids to be simulated."
3129
  msgstr ""
3130
 
3131
+ #: tpl/crawler/settings-simulation.tpl.php:49
3132
  msgid ""
3133
  "To crawl for a particular cookie, enter the cookie name, and the values you "
3134
  "wish to crawl for. Values should be one per line, and can include a blank "
3135
  "line. There will be one crawler created per cookie value, per simulated role."
3136
  msgstr ""
3137
 
3138
+ #: tpl/crawler/settings-simulation.tpl.php:51
3139
  msgid "Use %1$s in %2$s to indicate this cookie has not been set."
3140
  msgstr ""
3141
 
4778
  msgid "Selected roles will be excluded from all optimizations."
4779
  msgstr ""
4780
 
4781
+ #: tpl/toolbox/beta_test.tpl.php:22
4782
  msgid "Try GitHub Version"
4783
  msgstr ""
4784
 
4785
+ #: tpl/toolbox/beta_test.tpl.php:26
4786
  msgid ""
4787
  "Use this section to switch plugin versions. To beta test a GitHub commit, "
4788
  "enter the commit URL in the field below."
4789
  msgstr ""
4790
 
4791
+ #: tpl/toolbox/beta_test.tpl.php:27
4792
  msgid "Example"
4793
  msgstr ""
4794
 
4795
+ #: tpl/toolbox/beta_test.tpl.php:31
4796
+ msgid "Use latest GitHub Dev commit"
4797
+ msgstr ""
4798
+
4799
+ #: tpl/toolbox/beta_test.tpl.php:33
4800
+ msgid "Use latest GitHub Master commit"
4801
  msgstr ""
4802
 
4803
+ #: tpl/toolbox/beta_test.tpl.php:35 tpl/toolbox/beta_test.tpl.php:46
4804
  msgid "Use latest WordPress release version"
4805
  msgstr ""
4806
 
4807
+ #: tpl/toolbox/beta_test.tpl.php:35
4808
  msgid "OR"
4809
  msgstr ""
4810
 
4811
+ #: tpl/toolbox/beta_test.tpl.php:45
4812
  msgid "Press the %s button to use the most recent GitHub commit."
4813
  msgstr ""
4814
 
4815
+ #: tpl/toolbox/beta_test.tpl.php:45
4816
+ msgid "Use latest GitHub commit"
4817
+ msgstr ""
4818
+
4819
+ #: tpl/toolbox/beta_test.tpl.php:46
4820
  msgid ""
4821
  "Press the %s button to stop beta testing and go back to the current release "
4822
  "from the WordPress Plugin Directory."
litespeed-cache.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: LiteSpeed Cache
4
  * Plugin URI: https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration
5
  * Description: High-performance page caching and site optimization from LiteSpeed
6
- * Version: 3.6
7
  * Author: LiteSpeed Technologies
8
  * Author URI: https://www.litespeedtech.com
9
  * License: GPLv3
@@ -33,7 +33,7 @@ if ( class_exists( 'LiteSpeed\Core' ) || defined( 'LSCWP_DIR' ) ) {
33
  return;
34
  }
35
 
36
- ! defined( 'LSCWP_V' ) && define( 'LSCWP_V', '3.6' );
37
 
38
  ! defined( 'LSCWP_CONTENT_DIR' ) && define( 'LSCWP_CONTENT_DIR', WP_CONTENT_DIR ) ;
39
  ! defined( 'LSCWP_DIR' ) && define( 'LSCWP_DIR', __DIR__ . '/' ) ;// Full absolute path '/var/www/html/***/wp-content/plugins/litespeed-cache/' or MU
3
  * Plugin Name: LiteSpeed Cache
4
  * Plugin URI: https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration
5
  * Description: High-performance page caching and site optimization from LiteSpeed
6
+ * Version: 3.6.1
7
  * Author: LiteSpeed Technologies
8
  * Author URI: https://www.litespeedtech.com
9
  * License: GPLv3
33
  return;
34
  }
35
 
36
+ ! defined( 'LSCWP_V' ) && define( 'LSCWP_V', '3.6.1' );
37
 
38
  ! defined( 'LSCWP_CONTENT_DIR' ) && define( 'LSCWP_CONTENT_DIR', WP_CONTENT_DIR ) ;
39
  ! defined( 'LSCWP_DIR' ) && define( 'LSCWP_DIR', __DIR__ . '/' ) ;// Full absolute path '/var/www/html/***/wp-content/plugins/litespeed-cache/' or MU
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.5.3
6
- Stable tag: 3.6
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl.html
9
 
@@ -247,6 +247,19 @@ The vast majority of plugins and themes are compatible with LiteSpeed Cache. The
247
 
248
  == Changelog ==
249
 
 
 
 
 
 
 
 
 
 
 
 
 
 
250
  = 3.6 - Dec 14 2020 =
251
  * 🌱**WebP** Added WebP support on Safari Big Sur or Safari v14.0.1+. (@ruikai)
252
  * 🐞**Config** Fixed an issue where new installations were not getting the correct default .htaccess content.
@@ -267,7 +280,7 @@ The vast majority of plugins and themes are compatible with LiteSpeed Cache. The
267
  * **Cloud** Dropped QUIC.cloud sync options that have long been unused.
268
  * **CSS** Dropped `Unique CSS File` option (UCSS will always generate unique file, will use whitelist to group post type to one CSS).
269
  * **GUI** Dropped Help tab.
270
- * **Test** Added 3.5.2 to version list.
271
 
272
  = 3.5.2 - Oct 27 2020 =
273
  * **CSS** `CSS Combine` is now compatible w/ inline noscript CSS. (@galbaras)
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.6
6
+ Stable tag: 3.6.1
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl.html
9
 
247
 
248
  == Changelog ==
249
 
250
+ = 3.6.1 - Dec 21 2020 =
251
+ * **WP** Tested up to WP v5.6.
252
+ * **WebP** Reverted WebP support on Safari Big Sur and Safari v14.0.1+ due to an inability to detect MacOS versions from UA. (@antomal)
253
+ * **CDN** Dropped the option `Load JQuery Remotely`.
254
+ * **CDN** Fixed CDN URL replacement issue in optimized CSS files. (@ankit)
255
+ * **CDN** Fixed an issue where CDN CLI wouldn't set mapping image/CSS/JS to OFF when `false` was the value.
256
+ * **CDN** Started using React for CDN Mapping settings.
257
+ * **GUI** Secured Server IP setting from potential XSS issues. (@WonTae Jang)
258
+ * **Toolbox** Supported both dev and master branches for Beta Test. Latest version updated to v3.6.1.
259
+ * **Purge** Purge Pages now can purge non-archive pages too.
260
+ * **Admin** Simplified the admin JS.
261
+ * **Admin** Limited crawler-related react JS to crawler page only.
262
+
263
  = 3.6 - Dec 14 2020 =
264
  * 🌱**WebP** Added WebP support on Safari Big Sur or Safari v14.0.1+. (@ruikai)
265
  * 🐞**Config** Fixed an issue where new installations were not getting the correct default .htaccess content.
280
  * **Cloud** Dropped QUIC.cloud sync options that have long been unused.
281
  * **CSS** Dropped `Unique CSS File` option (UCSS will always generate unique file, will use whitelist to group post type to one CSS).
282
  * **GUI** Dropped Help tab.
283
+ * **Toolbox** Added 3.5.2 to version list.
284
 
285
  = 3.5.2 - Oct 27 2020 =
286
  * **CSS** `CSS Combine` is now compatible w/ inline noscript CSS. (@galbaras)
src/admin-display.cls.php CHANGED
@@ -196,11 +196,13 @@ class Admin_Display extends Base {
196
  // Admin footer
197
  add_filter('admin_footer_text', array($this, 'admin_footer_text'), 1);
198
 
199
- // Babel JS type correction
200
- add_filter( 'script_loader_tag', array( $this, 'bable_type' ), 10, 3 );
 
201
 
202
- wp_enqueue_script( Core::PLUGIN_NAME . '-lib-react', LSWCP_PLUGIN_URL . 'assets/js/react.min.js', array(), Core::VER, false );
203
- wp_enqueue_script( Core::PLUGIN_NAME . '-lib-babel', LSWCP_PLUGIN_URL . 'assets/js/babel.min.js', array(), Core::VER, false );
 
204
 
205
  // Crawler Cookie Simulation
206
  if ( $_GET[ 'page' ] == 'litespeed-crawler' ) {
@@ -211,10 +213,34 @@ class Admin_Display extends Base {
211
  $localize_data[ 'lang' ][ 'one_per_line' ] = Doc::one_per_line( true );
212
  $localize_data[ 'lang' ][ 'remove_cookie_simulation' ] = __( 'Remove cookie simulation', 'litespeed-cache' );
213
  $localize_data[ 'lang' ][ 'add_cookie_simulation_row' ] = __( 'Add new cookie to simulate', 'litespeed-cache' );
214
- $localize_data[ 'ids' ] = array();
215
  $localize_data[ 'ids' ][ 'crawler_cookies' ] = Base::O_CRAWLER_COOKIES;
216
  }
217
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
218
  // If on Server IP setting page, append getIP link
219
  if ( $_GET[ 'page' ] == 'litespeed-general' ) {
220
  $localize_data[ 'ajax_url_getIP' ] = function_exists( 'get_rest_url' ) ? get_rest_url( null, 'litespeed/v1/tool/check_ip' ) : '/';
@@ -235,7 +261,7 @@ class Admin_Display extends Base {
235
  * @since 3.6
236
  */
237
  public function bable_type( $tag, $handle, $src ) {
238
- if ( $handle != Core::PLUGIN_NAME . '-crawler' ) {
239
  return $tag;
240
  }
241
 
@@ -1036,7 +1062,7 @@ class Admin_Display extends Base {
1036
  }
1037
 
1038
  if ( ! \WP_Http::is_ip_address( $v ) ) {
1039
- $tip[] = __( 'Invalid IP', 'litespeed-cache' ) . ': <code>' . $v . '</code>.';
1040
  }
1041
  }
1042
 
196
  // Admin footer
197
  add_filter('admin_footer_text', array($this, 'admin_footer_text'), 1);
198
 
199
+ if ( $_GET[ 'page' ] == 'litespeed-crawler' || $_GET[ 'page' ] == 'litespeed-cdn' ) {
200
+ // Babel JS type correction
201
+ add_filter( 'script_loader_tag', array( $this, 'bable_type' ), 10, 3 );
202
 
203
+ wp_enqueue_script( Core::PLUGIN_NAME . '-lib-react', LSWCP_PLUGIN_URL . 'assets/js/react.min.js', array(), Core::VER, false );
204
+ wp_enqueue_script( Core::PLUGIN_NAME . '-lib-babel', LSWCP_PLUGIN_URL . 'assets/js/babel.min.js', array(), Core::VER, false );
205
+ }
206
 
207
  // Crawler Cookie Simulation
208
  if ( $_GET[ 'page' ] == 'litespeed-crawler' ) {
213
  $localize_data[ 'lang' ][ 'one_per_line' ] = Doc::one_per_line( true );
214
  $localize_data[ 'lang' ][ 'remove_cookie_simulation' ] = __( 'Remove cookie simulation', 'litespeed-cache' );
215
  $localize_data[ 'lang' ][ 'add_cookie_simulation_row' ] = __( 'Add new cookie to simulate', 'litespeed-cache' );
216
+ empty( $localize_data[ 'ids' ] ) && $localize_data[ 'ids' ] = array();
217
  $localize_data[ 'ids' ][ 'crawler_cookies' ] = Base::O_CRAWLER_COOKIES;
218
  }
219
 
220
+ // CDN mapping
221
+ if ( $_GET[ 'page' ] == 'litespeed-cdn' ) {
222
+ $home_url = home_url( '/' );
223
+ $parsed = parse_url( $home_url );
224
+ $home_url = str_replace( $parsed[ 'scheme' ] . ':', '', $home_url );
225
+ $cdn_url = 'https://cdn.' . substr( $home_url, 2 );
226
+
227
+ wp_enqueue_script( Core::PLUGIN_NAME . '-cdn', LSWCP_PLUGIN_URL . 'assets/js/component.cdn.js', array(), Core::VER, false );
228
+ $localize_data[ 'lang' ] = array();
229
+ $localize_data[ 'lang' ][ 'cdn_mapping_url' ] = Lang::title( Base::CDN_MAPPING_URL );
230
+ $localize_data[ 'lang' ][ 'cdn_mapping_inc_img' ] = Lang::title( Base::CDN_MAPPING_INC_IMG );
231
+ $localize_data[ 'lang' ][ 'cdn_mapping_inc_css' ] = Lang::title( Base::CDN_MAPPING_INC_CSS );
232
+ $localize_data[ 'lang' ][ 'cdn_mapping_inc_js' ] = Lang::title( Base::CDN_MAPPING_INC_JS );
233
+ $localize_data[ 'lang' ][ 'cdn_mapping_filetype' ] = Lang::title( Base::CDN_MAPPING_FILETYPE );
234
+ $localize_data[ 'lang' ][ 'cdn_mapping_url_desc' ] = sprintf( __( 'CDN URL to be used. For example, %s', 'litespeed-cache' ), '<code>' . $cdn_url . '</code>' );
235
+ $localize_data[ 'lang' ][ 'one_per_line' ] = Doc::one_per_line( true );
236
+ $localize_data[ 'lang' ][ 'cdn_mapping_remove' ] = __( 'Remove CDN URL', 'litespeed-cache' );
237
+ $localize_data[ 'lang' ][ 'add_cdn_mapping_row' ] = __( 'Add new CDN URL', 'litespeed-cache' );
238
+ $localize_data[ 'lang' ][ 'on' ] = __( 'ON', 'litespeed-cache' );
239
+ $localize_data[ 'lang' ][ 'off' ] = __( 'OFF', 'litespeed-cache' );
240
+ empty( $localize_data[ 'ids' ] ) && $localize_data[ 'ids' ] = array();
241
+ $localize_data[ 'ids' ][ 'cdn_mapping' ] = Base::O_CDN_MAPPING;
242
+ }
243
+
244
  // If on Server IP setting page, append getIP link
245
  if ( $_GET[ 'page' ] == 'litespeed-general' ) {
246
  $localize_data[ 'ajax_url_getIP' ] = function_exists( 'get_rest_url' ) ? get_rest_url( null, 'litespeed/v1/tool/check_ip' ) : '/';
261
  * @since 3.6
262
  */
263
  public function bable_type( $tag, $handle, $src ) {
264
+ if ( $handle != Core::PLUGIN_NAME . '-crawler' && $handle != Core::PLUGIN_NAME . '-cdn' ) {
265
  return $tag;
266
  }
267
 
1062
  }
1063
 
1064
  if ( ! \WP_Http::is_ip_address( $v ) ) {
1065
+ $tip[] = __( 'Invalid IP', 'litespeed-cache' ) . ': <code>' . esc_textarea( $v ) . '</code>.';
1066
  }
1067
  }
1068
 
src/admin-settings.cls.php CHANGED
@@ -124,7 +124,7 @@ class Admin_Settings extends Base
124
  if ( $child == self::CDN_MAPPING_FILETYPE ) {
125
  $v = Utility::sanitize_lines( $v );
126
  }
127
- elseif ( in_array( $v, array(
128
  self::CDN_MAPPING_INC_IMG,
129
  self::CDN_MAPPING_INC_CSS,
130
  self::CDN_MAPPING_INC_JS,
124
  if ( $child == self::CDN_MAPPING_FILETYPE ) {
125
  $v = Utility::sanitize_lines( $v );
126
  }
127
+ elseif ( in_array( $child, array(
128
  self::CDN_MAPPING_INC_IMG,
129
  self::CDN_MAPPING_INC_CSS,
130
  self::CDN_MAPPING_INC_JS,
src/base.cls.php CHANGED
@@ -256,7 +256,6 @@ class Base extends Instance {
256
  const O_CDN_ORI = 'cdn-ori';
257
  const O_CDN_ORI_DIR = 'cdn-ori_dir';
258
  const O_CDN_EXC = 'cdn-exc';
259
- const O_CDN_REMOTE_JQ = 'cdn-remote_jq';
260
  const O_CDN_QUIC = 'cdn-quic';
261
  const O_CDN_CLOUDFLARE = 'cdn-cloudflare';
262
  const O_CDN_CLOUDFLARE_EMAIL= 'cdn-cloudflare_email';
@@ -307,7 +306,6 @@ class Base extends Instance {
307
  self::O_CDN_ORI,
308
  self::O_CDN_ORI_DIR,
309
  self::O_CDN_EXC,
310
- self::O_CDN_REMOTE_JQ,
311
  self::O_CDN_QUIC,
312
  self::O_CDN_CLOUDFLARE,
313
  self::O_CDN_CLOUDFLARE_EMAIL,
@@ -531,7 +529,6 @@ class Base extends Instance {
531
  self::O_CDN_ORI => array(),
532
  self::O_CDN_ORI_DIR => array(),
533
  self::O_CDN_EXC => array(),
534
- self::O_CDN_REMOTE_JQ => false,
535
  self::O_CDN_QUIC => false,
536
  self::O_CDN_CLOUDFLARE => false,
537
  self::O_CDN_CLOUDFLARE_EMAIL => '',
@@ -595,7 +592,6 @@ class Base extends Instance {
595
 
596
  // NOTE: all the val of following items will be int while not bool
597
  protected static $_multi_switch_list = array(
598
- self::O_CDN_REMOTE_JQ => 2,
599
  self::O_DEBUG => 2,
600
  self::O_OPTM_CSS_FONT_DISPLAY => 4,
601
  self::O_OPTM_JS_INLINE_DEFER => 2,
256
  const O_CDN_ORI = 'cdn-ori';
257
  const O_CDN_ORI_DIR = 'cdn-ori_dir';
258
  const O_CDN_EXC = 'cdn-exc';
 
259
  const O_CDN_QUIC = 'cdn-quic';
260
  const O_CDN_CLOUDFLARE = 'cdn-cloudflare';
261
  const O_CDN_CLOUDFLARE_EMAIL= 'cdn-cloudflare_email';
306
  self::O_CDN_ORI,
307
  self::O_CDN_ORI_DIR,
308
  self::O_CDN_EXC,
 
309
  self::O_CDN_QUIC,
310
  self::O_CDN_CLOUDFLARE,
311
  self::O_CDN_CLOUDFLARE_EMAIL,
529
  self::O_CDN_ORI => array(),
530
  self::O_CDN_ORI_DIR => array(),
531
  self::O_CDN_EXC => array(),
 
532
  self::O_CDN_QUIC => false,
533
  self::O_CDN_CLOUDFLARE => false,
534
  self::O_CDN_CLOUDFLARE_EMAIL => '',
592
 
593
  // NOTE: all the val of following items will be int while not bool
594
  protected static $_multi_switch_list = array(
 
595
  self::O_DEBUG => 2,
596
  self::O_OPTM_CSS_FONT_DISPLAY => 4,
597
  self::O_OPTM_JS_INLINE_DEFER => 2,
src/cdn.cls.php CHANGED
@@ -24,7 +24,6 @@ class CDN extends Instance {
24
  private $_cfg_ori_dir;
25
  private $_cfg_cdn_mapping = array();
26
  private $_cfg_cdn_exclude;
27
- private $_cfg_cdn_remote_jquery;
28
 
29
  private $cdn_mapping_hosts = array();
30
 
@@ -53,16 +52,6 @@ class CDN extends Instance {
53
 
54
  $this->__cfg = Conf::get_instance();
55
 
56
- /**
57
- * Remotely load jQuery
58
- * This is separate from CDN on/off
59
- * @since 1.5
60
- */
61
- $this->_cfg_cdn_remote_jquery = Conf::val( Base::O_CDN_REMOTE_JQ );
62
- if ( $this->_cfg_cdn_remote_jquery ) {
63
- add_action( 'wp', array( $this, 'load_jquery_remotely' ) );
64
- }
65
-
66
  $this->_cfg_cdn = Conf::val( Base::O_CDN );
67
  if ( ! $this->_cfg_cdn ) {
68
  if ( ! defined( self::BYPASS ) ) {
@@ -577,32 +566,4 @@ class CDN extends Instance {
577
  return in_array( $host, $instance->cdn_mapping_hosts );// todo: can add $this->_is_ori_url() check in future
578
  }
579
 
580
- /**
581
- * Remote load jQuery remotely
582
- *
583
- * @since 1.5
584
- * @access public
585
- */
586
- public function load_jquery_remotely() {
587
- // default jq version
588
- $v = '1.12.4';
589
-
590
- // load wp's jq version
591
- global $wp_scripts;
592
- if ( isset( $wp_scripts->registered[ 'jquery-core' ]->ver ) ) {
593
- $v = $wp_scripts->registered[ 'jquery-core' ]->ver;
594
- // Remove all unexpected chars to fix WP5.2.1 jq version issue @see https://wordpress.org/support/topic/problem-with-wordpress-5-2-1/
595
- $v = preg_replace( '|[^\d\.]|', '', $v );
596
- }
597
-
598
- $src = $this->_cfg_cdn_remote_jquery == Base::VAL_ON2 ? "//cdnjs.cloudflare.com/ajax/libs/jquery/$v/jquery.min.js" : "//ajax.googleapis.com/ajax/libs/jquery/$v/jquery.min.js";
599
-
600
- wp_deregister_script( 'jquery-core' );
601
- wp_deregister_script( 'jquery' );
602
-
603
- $res = wp_register_script( 'jquery-core', $src, false, $v );
604
- $res = wp_register_script( 'jquery', $src, false, $v );
605
-
606
- Debug2::debug2( '[CDN] load_jquery_remotely: ' . $src, $res );
607
- }
608
  }
24
  private $_cfg_ori_dir;
25
  private $_cfg_cdn_mapping = array();
26
  private $_cfg_cdn_exclude;
 
27
 
28
  private $cdn_mapping_hosts = array();
29
 
52
 
53
  $this->__cfg = Conf::get_instance();
54
 
 
 
 
 
 
 
 
 
 
 
55
  $this->_cfg_cdn = Conf::val( Base::O_CDN );
56
  if ( ! $this->_cfg_cdn ) {
57
  if ( ! defined( self::BYPASS ) ) {
566
  return in_array( $host, $instance->cdn_mapping_hosts );// todo: can add $this->_is_ori_url() check in future
567
  }
568
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
569
  }
src/data.upgrade.func.php CHANGED
@@ -303,7 +303,7 @@ function litespeed_update_3_0( $ver ) {
303
  'cdn' => 'cdn',
304
  'cdn_ori' => 'cdn-ori',
305
  'cdn_exclude' => 'cdn-exc',
306
- 'cdn_remote_jquery' => 'cdn-remote_jq',
307
  'cdn_quic' => 'cdn-quic',
308
  'cdn_cloudflare' => 'cdn-cloudflare',
309
  'cdn_cloudflare_email' => 'cdn-cloudflare_email',
303
  'cdn' => 'cdn',
304
  'cdn_ori' => 'cdn-ori',
305
  'cdn_exclude' => 'cdn-exc',
306
+ // 'cdn_remote_jquery' => 'cdn-remote_jq',
307
  'cdn_quic' => 'cdn-quic',
308
  'cdn_cloudflare' => 'cdn-cloudflare',
309
  'cdn_cloudflare_email' => 'cdn-cloudflare_email',
src/htaccess.cls.php CHANGED
@@ -611,9 +611,6 @@ class Htaccess extends Instance {
611
  $new_rules[] = 'RewriteCond %{HTTP_USER_AGENT} iPhone.*Version/(\d{2}).*Safari';
612
  $new_rules[] = 'RewriteCond %1 >13';
613
  $new_rules[] = 'RewriteRule .* - [E=Cache-Control:vary=%{ENV:LSCACHE_VARY_VALUE}+webp]';
614
- $new_rules[] = 'RewriteCond %{HTTP_USER_AGENT} Mac.*Version/(\d{2}(.\d{1,2})?(.\d{1,2})?).*Safari';
615
- $new_rules[] = 'RewriteCond %1 >14.0.0';
616
- $new_rules[] = 'RewriteRule .* - [E=Cache-Control:vary=%{ENV:LSCACHE_VARY_VALUE}+webp]';
617
  $new_rules[] = self::MARKER_WEBP . self::MARKER_END;
618
  $new_rules[] = '';
619
  }
@@ -898,3 +895,4 @@ class Htaccess extends Instance {
898
 
899
  }
900
  }
 
611
  $new_rules[] = 'RewriteCond %{HTTP_USER_AGENT} iPhone.*Version/(\d{2}).*Safari';
612
  $new_rules[] = 'RewriteCond %1 >13';
613
  $new_rules[] = 'RewriteRule .* - [E=Cache-Control:vary=%{ENV:LSCACHE_VARY_VALUE}+webp]';
 
 
 
614
  $new_rules[] = self::MARKER_WEBP . self::MARKER_END;
615
  $new_rules[] = '';
616
  }
895
 
896
  }
897
  }
898
+
src/lang.cls.php CHANGED
@@ -205,7 +205,6 @@ class Lang extends Base
205
  self::O_CDN_ORI => __( 'Original URLs', 'litespeed-cache' ),
206
  self::O_CDN_ORI_DIR => __( 'Included Directories', 'litespeed-cache' ),
207
  self::O_CDN_EXC => __( 'Exclude Path', 'litespeed-cache' ),
208
- self::O_CDN_REMOTE_JQ => __( 'Load JQuery Remotely', 'litespeed-cache' ),
209
  self::O_CDN_CLOUDFLARE => __( 'Cloudflare API', 'litespeed-cache' ),
210
 
211
  self::O_CRAWLER => __( 'Crawler', 'litespeed-cache' ),
205
  self::O_CDN_ORI => __( 'Original URLs', 'litespeed-cache' ),
206
  self::O_CDN_ORI_DIR => __( 'Included Directories', 'litespeed-cache' ),
207
  self::O_CDN_EXC => __( 'Exclude Path', 'litespeed-cache' ),
 
208
  self::O_CDN_CLOUDFLARE => __( 'Cloudflare API', 'litespeed-cache' ),
209
 
210
  self::O_CRAWLER => __( 'Crawler', 'litespeed-cache' ),
src/media.cls.php CHANGED
@@ -409,13 +409,6 @@ class Media extends Instance {
409
  return true;
410
  }
411
 
412
- if ( preg_match("/(?:version\/|safari)([\d.]+)/i", $_SERVER['HTTP_USER_AGENT'], $matches) ) {
413
- $lscwp_mac_version = $matches[1];
414
- if (version_compare($lscwp_mac_version, '14.0.0', '>')){
415
- return true;
416
- }
417
- }
418
-
419
  if ( preg_match( "/iPhone OS (\d+)_/i", $_SERVER[ 'HTTP_USER_AGENT' ], $matches ) ) {
420
  $lscwp_ios_version = $matches[1];
421
  if ($lscwp_ios_version >= 14){
409
  return true;
410
  }
411
 
 
 
 
 
 
 
 
412
  if ( preg_match( "/iPhone OS (\d+)_/i", $_SERVER[ 'HTTP_USER_AGENT' ], $matches ) ) {
413
  $lscwp_ios_version = $matches[1];
414
  if ($lscwp_ios_version >= 14){
src/optimizer.cls.php CHANGED
@@ -137,6 +137,8 @@ class Optimizer extends Instance {
137
  if ( ! $concat_only && ! $is_min ) {
138
  $content = self::minify_css( $content );
139
  }
 
 
140
  }
141
  else {
142
  if ( ! $concat_only && ! $is_min ) {
137
  if ( ! $concat_only && ! $is_min ) {
138
  $content = self::minify_css( $content );
139
  }
140
+
141
+ $content = CDN::finalize( $content );
142
  }
143
  else {
144
  if ( ! $concat_only && ! $is_min ) {
src/purge.cls.php CHANGED
@@ -698,6 +698,7 @@ class Purge extends Base {
698
  */
699
  public static function purge_posttype( $post_type ) {
700
  self::add( Tag::TYPE_ARCHIVE_POSTTYPE . $post_type );
 
701
  }
702
 
703
  /**
@@ -1008,6 +1009,7 @@ class Purge extends Base {
1008
  if ( Conf::val( Base::O_PURGE_POST_POSTTYPE) ) {
1009
  if ( get_post_type_archive_link($post_type) ) {
1010
  $purge_tags[] = Tag::TYPE_ARCHIVE_POSTTYPE . $post_type;
 
1011
  }
1012
  }
1013
 
698
  */
699
  public static function purge_posttype( $post_type ) {
700
  self::add( Tag::TYPE_ARCHIVE_POSTTYPE . $post_type );
701
+ self::add( $post_type );
702
  }
703
 
704
  /**
1009
  if ( Conf::val( Base::O_PURGE_POST_POSTTYPE) ) {
1010
  if ( get_post_type_archive_link($post_type) ) {
1011
  $purge_tags[] = Tag::TYPE_ARCHIVE_POSTTYPE . $post_type;
1012
+ $purge_tags[] = $post_type;
1013
  }
1014
  }
1015
 
tpl/cdn/settings.tpl.php CHANGED
@@ -54,71 +54,20 @@ $this->form_action();
54
  <tr>
55
  <th class="litespeed-padding-left"></th>
56
  <td>
57
- <?php foreach ( $cdn_mapping as $v ) : ?>
58
-
59
- <div class="litespeed-block" data-litespeed-cdn-mapping="1">
60
- <div class='litespeed-cdn-mapping-col1'>
61
- <label class="litespeed-form-label">
62
- <?php $id = Base::CDN_MAPPING_URL; ?>
63
- <?php $this->title( $id ); ?>
64
- <button type="button" class="button button-link litespeed-collection-button litespeed-danger" data-litespeed-cdn-mapping-del="1" data-action="remove">
65
- <span class="dashicons dashicons-dismiss"></span>
66
- <span class="screen-reader-text"><?php echo __( 'Remove CDN URL', 'litespeed-cache' ); ?></span>
67
- </button>
68
- </label>
69
-
70
- <?php
71
- $this->build_input( Base::O_CDN_MAPPING . "[$id][]", 'litespeed-input-long', $v[ $id ] );
72
- ?>
73
- <div class="litespeed-desc">
74
- <?php echo sprintf( __( 'CDN URL to be used. For example, %s', 'litespeed-cache' ), '<code>' . $cdn_url . '</code>' ); ?>
75
- </div>
76
- </div>
77
-
78
- <div class="litespeed-col-auto litespeed-cdn-mapping-col2">
79
- <div class="litespeed-row litespeed-toggle-wrapper">
80
- <div class="litespeed-cdn-mapping-inc litespeed-form-label litespeed-form-label--toggle">
81
- <?php $id = Base::CDN_MAPPING_INC_IMG; ?>
82
- <?php $this->title( $id ); ?>
83
- </div>
84
- <?php
85
- $this->build_toggle( Base::O_CDN_MAPPING . "[$id][]", ! empty( $v[ $id ] ) ? true : false );
86
- ?>
87
- </div>
88
- <div class="litespeed-row litespeed-toggle-wrapper">
89
- <div class="litespeed-cdn-mapping-inc litespeed-form-label litespeed-form-label--toggle">
90
- <?php $id = Base::CDN_MAPPING_INC_CSS; ?>
91
- <?php $this->title( $id ); ?>
92
- </div>
93
- <?php
94
- $this->build_toggle( Base::O_CDN_MAPPING . "[$id][]", ! empty( $v[ $id ] ) ? true : false );
95
- ?>
96
- </div>
97
- <div class="litespeed-row litespeed-toggle-wrapper">
98
- <div class="litespeed-cdn-mapping-inc litespeed-form-label litespeed-form-label--toggle">
99
- <?php $id = Base::CDN_MAPPING_INC_JS; ?>
100
- <?php $this->title( $id ); ?>
101
- </div>
102
- <?php
103
- $this->build_toggle( Base::O_CDN_MAPPING . "[$id][]", ! empty( $v[ $id ] ) ? true : false );
104
- ?>
105
- </div>
106
- </div>
107
-
108
- <div class="litespeed-col-auto">
109
- <label class="litespeed-form-label">
110
- <?php $id = Base::CDN_MAPPING_FILETYPE; ?>
111
- <?php $this->title( $id ); ?>
112
- </label>
113
- <?php $this->build_textarea( Base::O_CDN_MAPPING . "[$id][]", 18, is_array( $v[ $id ] ) ? implode( "\n", $v[ $id ] ) : $v[ $id ] ); ?>
114
- </div>
115
- </div>
116
 
117
- <?php endforeach; ?>
118
 
119
- <p><button type="button" class="button button-link litespeed-form-action litespeed-link-with-icon" id="litespeed-cdn-mapping-add" data-action="add">
120
- <span class="dashicons dashicons-plus-alt"></span><?php echo __( 'Add new CDN URL', 'litespeed-cache' );?>
121
- </button></p>
 
 
 
122
 
123
  <div class="litespeed-warning">
124
  <?php echo __('NOTE', 'litespeed-cache'); ?>:
@@ -228,19 +177,6 @@ $this->form_action();
228
  </td>
229
  </tr>
230
 
231
- <tr>
232
- <th>
233
- <?php $id = Base::O_CDN_REMOTE_JQ; ?>
234
- <?php $this->title( $id ); ?>
235
- </th>
236
- <td>
237
- <?php $this->build_switch( $id, array( __( 'OFF', 'litespeed-cache' ), 'Google', 'CDNJS' ) ); ?>
238
- <div class="litespeed-desc">
239
- <?php echo __( 'Improve page load time by loading jQuery from a remote CDN service instead of locally.', 'litespeed-cache' ); ?>
240
- </div>
241
- </td>
242
- </tr>
243
-
244
  <tr>
245
  <th>
246
  <?php $id = Base::O_CDN_CLOUDFLARE; ?>
54
  <tr>
55
  <th class="litespeed-padding-left"></th>
56
  <td>
57
+ <?php $this->enroll( Base::O_CDN_MAPPING . '[' . Base::CDN_MAPPING_URL . '][]' ); ?>
58
+ <?php $this->enroll( Base::O_CDN_MAPPING . '[' . Base::CDN_MAPPING_INC_IMG . '][]' ); ?>
59
+ <?php $this->enroll( Base::O_CDN_MAPPING . '[' . Base::CDN_MAPPING_INC_CSS . '][]' ); ?>
60
+ <?php $this->enroll( Base::O_CDN_MAPPING . '[' . Base::CDN_MAPPING_INC_JS . '][]' ); ?>
61
+ <?php $this->enroll( Base::O_CDN_MAPPING . '[' . Base::CDN_MAPPING_FILETYPE . '][]' ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
 
63
+ <div id="litespeed_cdn_mapping_div"></div>
64
 
65
+ <script type="text/babel">
66
+ ReactDOM.render(
67
+ <CDNMapping list={ <?php echo json_encode( $cdn_mapping ); ?> } />,
68
+ document.getElementById( 'litespeed_cdn_mapping_div' )
69
+ );
70
+ </script>
71
 
72
  <div class="litespeed-warning">
73
  <?php echo __('NOTE', 'litespeed-cache'); ?>:
177
  </td>
178
  </tr>
179
 
 
 
 
 
 
 
 
 
 
 
 
 
 
180
  <tr>
181
  <th>
182
  <?php $id = Base::O_CDN_CLOUDFLARE; ?>
tpl/crawler/settings-simulation.tpl.php CHANGED
@@ -39,28 +39,10 @@ $this->form_action();
39
  <div id="litespeed_crawler_simulation_div"></div>
40
 
41
  <script type="text/babel">
42
- <?php
43
- // Build the cookie crawler Vue data
44
- /**
45
- * Data Src Structure:
46
- * crawler-cookie[ 0 ][ name ] = 'xxx'
47
- * crawler-cookie[ 0 ][ vals ] = 'xxx'
48
- */
49
- $list = array();
50
- foreach ( Conf::val( $id ) as $v ) {
51
- if ( empty( $v[ 'name' ] ) ) {
52
- continue;
53
- }
54
-
55
- $list[] = "{ name: '$v[name]', vals: `" . implode( "\n", $v[ 'vals' ] ) . "` }";// $v contains line break
56
- }
57
- ?>
58
- const simulatorList = [ <?php echo implode( ',', $list ); ?> ];
59
  ReactDOM.render(
60
- <CrawlerSimulate list={ simulatorList } />,
61
  document.getElementById( 'litespeed_crawler_simulation_div' )
62
  );
63
-
64
  </script>
65
 
66
  <div class="litespeed-desc">
39
  <div id="litespeed_crawler_simulation_div"></div>
40
 
41
  <script type="text/babel">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  ReactDOM.render(
43
+ <CrawlerSimulate list={ <?php echo json_encode( Conf::val( $id ) ); ?> } />,
44
  document.getElementById( 'litespeed_crawler_simulation_div' )
45
  );
 
46
  </script>
47
 
48
  <div class="litespeed-desc">
tpl/toolbox/beta_test.tpl.php CHANGED
@@ -4,6 +4,8 @@ defined( 'WPINC' ) || exit;
4
 
5
  // Existing public version list
6
  $v_list = array(
 
 
7
  '3.5.2',
8
  '3.5.1',
9
  '3.5.0.1',
@@ -26,7 +28,9 @@ $v_list = array(
26
 
27
  <input type="text" name="<?php echo Debug2::BETA_TEST_URL; ?>" class="litespeed-input-long" id='litespeed-beta-test'>
28
 
29
- <p><a href="javascript:;" class="button litespeed-btn-success" onclick="document.getElementById('litespeed-beta-test').value='dev';"><?php echo __( 'Use latest GitHub commit', 'litespeed-cache' ); ?></a> <code>dev</code></p>
 
 
30
 
31
  <p><a href="javascript:;" class="button litespeed-btn-success" onclick="document.getElementById('litespeed-beta-test').value='latest';"><?php echo __( 'Use latest WordPress release version', 'litespeed-cache' ); ?></a> <code><?php echo Debug2::BETA_TEST_URL_WP; ?></code> <?php echo __( 'OR', 'litespeed-cache' ) ?> <code>latest</code></p>
32
 
4
 
5
  // Existing public version list
6
  $v_list = array(
7
+ '3.6.1',
8
+ '3.6',
9
  '3.5.2',
10
  '3.5.1',
11
  '3.5.0.1',
28
 
29
  <input type="text" name="<?php echo Debug2::BETA_TEST_URL; ?>" class="litespeed-input-long" id='litespeed-beta-test'>
30
 
31
+ <p><a href="javascript:;" class="button litespeed-btn-success" onclick="document.getElementById('litespeed-beta-test').value='dev';"><?php echo __( 'Use latest GitHub Dev commit', 'litespeed-cache' ); ?></a> <code>dev</code></p>
32
+
33
+ <p><a href="javascript:;" class="button litespeed-btn-success" onclick="document.getElementById('litespeed-beta-test').value='master';"><?php echo __( 'Use latest GitHub Master commit', 'litespeed-cache' ); ?></a> <code>master</code></p>
34
 
35
  <p><a href="javascript:;" class="button litespeed-btn-success" onclick="document.getElementById('litespeed-beta-test').value='latest';"><?php echo __( 'Use latest WordPress release version', 'litespeed-cache' ); ?></a> <code><?php echo Debug2::BETA_TEST_URL_WP; ?></code> <?php echo __( 'OR', 'litespeed-cache' ) ?> <code>latest</code></p>
36