PluginProbe
WP-Optimize – Cache, Compress images, Minify & Clean database to boost page speed & performance / 4.7.0
WP-Optimize – Cache, Compress images, Minify & Clean database to boost page speed & performance v4.7.0
4.7.0 4.6.1 4.6.0 4.5.5 4.5.4 4.5.3 4.5.2 3.2.20 3.2.21 3.2.22 3.2.3 3.2.5 3.2.6 3.2.7 3.2.9 3.3.0 3.3.1 3.3.2 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.7.0 3.7.1 All 111 releases
← All changes | js/cache.js +140 -70 3.2.22 → 4.7.0 View file →
@@ -1,8 +1,11 @@
1 1 var WP_Optimize_Cache = function () {
2 2
3 3 var $ = jQuery;
4 + var block_ui = wp_optimize.block_ui;
4 5 var send_command = wp_optimize.send_command;
6 + var heartbeat = WP_Optimize_Heartbeat();
7 + var heartbeat_agents = [];
5 8
6 9 var browser_cache_enable_btn = $('#wp_optimize_browser_cache_enable'),
7 10 purge_cache_btn = $('#wp-optimize-purge-cache'),
8 11 enable_page_caching_switch = $('#enable_page_caching'),
@@ -11,15 +14,19 @@
11 14 /**
12 15 * Handle purge cache btn.
13 16 */
14 17 purge_cache_btn.on('click', function() {
18 +
15 19 var btn = $(this),
16 20 spinner = btn.next(),
17 21 success_icon = spinner.next();
18 22
23 + if (btn.prop('disabled')) return false;
24 + btn.prop('disabled', true);
19 25 spinner.show();
20 26
21 27 send_command('purge_page_cache', {}, function(response) {
28 + btn.prop('disabled', false);
22 29 spinner.hide();
23 30 success_icon.show();
24 31 setTimeout(function() {
25 32 success_icon.fadeOut('slow', function() {
@@ -61,9 +68,9 @@
61 68
62 69 /**
63 70 * Handle Enable Gzip compression button click.
64 71 */
65 - $('#wp_optimize_gzip_compression_enable').on('click', function() {
72 + $('#wp-optimize-nav-tab-wpo_cache-gzip-contents').on('click', '#wp_optimize_gzip_compression_enable', function() {
66 73 var button = $(this),
67 74 loader = button.next();
68 75
69 76 loader.show();
@@ -68,20 +75,13 @@
68 75
69 76 loader.show();
70 77
71 78 send_command('enable_gzip_compression', {enable: button.data('enable')}, function(response) {
72 - var gzip_status_message = $('#wpo_gzip_compression_status');
73 79 if (response) {
74 - if (response.enabled) {
75 - button.text(wpoptimize.disable);
76 - button.data('enable', '0');
77 - gzip_status_message.removeClass('wpo-disabled').addClass('wpo-enabled');
78 - } else {
79 - button.text(wpoptimize.enable);
80 - button.data('enable', '1');
81 - gzip_status_message.addClass('wpo-disabled').removeClass('wpo-enabled');
82 - }
83 80
81 + $('#wpo_gzip_compression_test_btn').trigger('click');
82 +
83 + // Handle error message
84 84 if (response.message) {
85 85 $('#wpo_gzip_compression_error_message').text(response.message).show();
86 86 } else {
87 87 $('#wpo_gzip_compression_error_message').hide();
@@ -104,11 +104,52 @@
104 104 });
105 105 });
106 106
107 107 /**
108 + * Handle Test again compressions button click
109 + */
110 + $('#wp-optimize-nav-tab-wpo_cache-gzip-contents').on('click', '#wpo_gzip_compression_test_btn', function() {
111 + var btn = $(this);
112 +
113 + if (btn.prop('disabled')) return;
114 +
115 + btn.prop('disabled', true);
116 + $('#wpo_gzip_compression_details').hide();
117 + $('#wpo_gzip_control_panel .wpo_shade').removeClass('hidden');
118 +
119 + send_command('get_compression_test_results_html', {}, function(response) {
120 + if (response.results_html) {
121 + $('#wpo_gzip_compression_details').html(response.results_html);
122 + } else {
123 + $('#wpo_gzip_compression_details').text(wpoptimize.error_unexpected_response);
124 + }
125 +
126 + if (response.gzip_compression_control_panel) {
127 + $('#wpo_gzip_control_panel').html(response.gzip_compression_control_panel);
128 + }
129 + }).fail(function() {
130 + alert(wpoptimize.error_unexpected_response);
131 + }).always(function() {
132 + $('#wpo_gzip_control_panel .wpo_shade').addClass('hidden');
133 + $('#wpo_gzip_compression_details').show();
134 + btn.prop('disabled', false);
135 + });
136 + });
137 +
138 + /**
139 + * Update gzip test results when tab is activated
140 + */
141 + $('#wp-optimize-wrap').on('tab-change/wpo_cache/gzip', function() {
142 + if (!$('#wp-optimize-nav-tab-wpo_cache-gzip').data('activated')) {
143 + $('#wp-optimize-nav-tab-wpo_cache-gzip').data('activated', true);
144 + $('#wpo_gzip_compression_test_btn').trigger('click');
145 + }
146 + });
147 +
148 + /**
108 149 * Manually check gzip status
109 150 */
110 - $('.wpo-refresh-gzip-status').on('click', function(e) {
151 + $('#wp-optimize-nav-tab-wpo_cache-gzip-contents').on('click', '.wpo-refresh-gzip-status', function(e) {
111 152 e.preventDefault();
112 153 $link = $(this);
113 154 $link.addClass('loading');
114 155 send_command('get_gzip_compression_status', null, function(response) {
@@ -145,12 +186,12 @@
145 186 if (isNaN(browser_cache_expire_days)) browser_cache_expire_days = 0;
146 187 if (isNaN(browser_cache_expire_hours)) browser_cache_expire_hours = 0;
147 188
148 189 if (browser_cache_expire_days < 0 || browser_cache_expire_hours < 0) {
149 - $('#wpo_browser_cache_error_message').text(wpoptimize.please_use_positive_integers).show();
190 + alert(wpoptimize.please_use_positive_integers);
150 191 return false;
151 192 } else if (browser_cache_expire_hours > 23) {
152 - $('#wpo_browser_cache_error_message').text(wpoptimize.please_use_valid_values).show();
193 + alert(wpoptimize.please_use_valid_values);
153 194 return false;
154 195 } else {
155 196 $('#wpo_browser_cache_error_message').hide();
156 197 }
@@ -160,46 +201,48 @@
160 201 browser_cache_expire_hours_el.val(browser_cache_expire_hours);
161 202
162 203 loader.show();
163 204
164 - send_command('enable_browser_cache', {browser_cache_expire_days: browser_cache_expire_days, browser_cache_expire_hours: browser_cache_expire_hours}, function(response) {
165 - var cache_status_message = $('#wpo_browser_cache_status');
166 - var cache_status_field = $('#wpo_enable_browser_cache');
167 - if (response) {
168 - if (response.enabled) {
169 - button.text(wpoptimize.update);
170 - cache_status_message.removeClass('wpo-disabled').addClass('wpo-enabled');
171 - cache_status_field.val('true');
172 - } else {
173 - button.text(wpoptimize.enable);
174 - cache_status_message.addClass('wpo-disabled').removeClass('wpo-enabled');
175 - cache_status_field.val('false');
176 - }
205 + send_command('enable_browser_cache',
206 + {browser_cache_expire_days: browser_cache_expire_days,
207 + browser_cache_expire_hours: browser_cache_expire_hours}, function(response) {
208 + var cache_status_message = $('#wpo_browser_cache_status');
209 + var cache_status_field = $('#wpo_enable_browser_cache');
210 + if (response) {
211 + if (response.enabled) {
212 + button.text(wpoptimize.update);
213 + cache_status_message.removeClass('wpo-disabled').addClass('wpo-enabled');
214 + cache_status_field.val('true');
215 + } else {
216 + button.text(wpoptimize.enable);
217 + cache_status_message.addClass('wpo-disabled').removeClass('wpo-enabled');
218 + cache_status_field.val('false');
219 + }
177 220
178 - if (response.message) {
179 - $('#wpo_browser_cache_message').text(response.message).show();
180 - } else {
181 - $('#wpo_browser_cache_message').hide();
182 - }
221 + if (response.message) {
222 + $('#wpo_browser_cache_message').text(response.message).show();
223 + } else {
224 + $('#wpo_browser_cache_message').hide();
225 + }
183 226
184 - if (response.error_message) {
185 - $('#wpo_browser_cache_error_message').text(response.error_message).show();
186 - } else {
187 - $('#wpo_browser_cache_error_message').hide();
188 - }
227 + if (response.error_message) {
228 + $('#wpo_browser_cache_error_message').text(response.error_message).show();
229 + } else {
230 + $('#wpo_browser_cache_error_message').hide();
231 + }
189 232
190 - if (response.output) {
191 - $('#wpo_browser_cache_output').html(response.output).show();
233 + if (response.output) {
234 + $('#wpo_browser_cache_output').html(response.output).show();
235 + } else {
236 + $('#wpo_browser_cache_output').hide();
237 + }
238 +
192 239 } else {
193 - $('#wpo_browser_cache_output').hide();
240 + alert(wpoptimize.error_unexpected_response);
194 241 }
195 242
196 - } else {
197 - alert(wpoptimize.error_unexpected_response);
198 - }
199 -
200 - loader.hide();
201 - }).fail(function() {
243 + loader.hide();
244 + }).fail(function() {
202 245 alert(wpoptimize.error_unexpected_response);
203 246 loader.hide();
204 247 });
205 248 });
@@ -257,9 +300,9 @@
257 300 spinner = btn.next(),
258 301 success_icon = spinner.next();
259 302
260 303 spinner.show();
261 - $.blockUI();
304 + block_ui(wpoptimize.saving);
262 305
263 306 send_command('save_cache_settings', { 'cache-settings': gather_cache_settings() }, function(response) {
264 307
265 308 if (response.hasOwnProperty('js_trigger')) {
@@ -315,8 +358,10 @@
315 358 $('#wp_optimize_run_minify_preload').prop('disabled', false);
316 359 $('#minify-preload').hide();
317 360 }
318 361
362 + $(document).trigger('wp-optimize/cache/toggle-status', {enabled: response.enabled});
363 +
319 364 if (response.result) {
320 365 // If Result is true, show the success icon.
321 366 success_icon.show();
322 367 setTimeout(function() {
@@ -362,9 +407,8 @@
362 407 */
363 408
364 409 var run_cache_preload_btn = $('#wp_optimize_run_cache_preload'),
365 410 cache_preload_status_el = $('#wp_optimize_preload_cache_status'),
366 - check_status_interval = null,
367 411 enable_schedule_preloading = $('#enable_schedule_preload'),
368 412 preloader_schedule_type_select = $('#preload_schedule_type');
369 413
370 414 enable_schedule_preloading.on('change', function() {
@@ -385,10 +429,11 @@
385 429 btn.prop('disabled', true);
386 430
387 431 if (is_running) {
388 432 btn.data('running', false);
389 - clearInterval(check_status_interval);
390 - check_status_interval = null;
433 +
434 + heartbeat.cancel_agents(heartbeat_agents);
435 +
391 436 send_command(
392 437 'cancel_cache_preload',
393 438 null,
394 439 function(response) {
@@ -417,9 +462,9 @@
417 462 var resp = wpo_parse_json(response);
418 463 } catch (e) {
419 464 }
420 465
421 - if (resp && resp.error) {
466 + if (resp && resp.error && 'timeout' !== resp.statusText) {
422 467
423 468 var error_text = wpoptimize.error_unexpected_response;
424 469
425 470 if (typeof resp.error != 'function') {
@@ -452,18 +497,20 @@
452 497 run_update_cache_preload_status();
453 498 }
454 499
455 500 /**
456 - * Create interval action for update preloader status.
501 + * Create heartbeat agent action for update preloader status.
457 502 *
458 503 * @return void
459 504 */
460 505 function run_update_cache_preload_status() {
461 - if (check_status_interval) return;
506 + var agent = heartbeat.add_agent({
507 + command: 'get_cache_preload_status',
508 + callback: update_cache_preload_status,
509 + _keep: false
510 + });
462 511
463 - check_status_interval = setInterval(function() {
464 - update_cache_preload_status();
465 - }, 5000);
512 + if (null !== agent) heartbeat_agents.push(agent);
466 513 }
467 514
468 515 /**
469 516 * Update cache preload status ajax action.
@@ -469,22 +516,19 @@
469 516 * Update cache preload status ajax action.
470 517 *
471 518 * @return void
472 519 */
473 - function update_cache_preload_status() {
474 - send_command('get_cache_preload_status', null, function(response) {
475 - if (response.done) {
476 - run_cache_preload_btn.val(wpoptimize.run_now);
477 - run_cache_preload_btn.data('running', false);
478 - clearInterval(check_status_interval);
479 - check_status_interval = null;
480 - } else {
481 - run_cache_preload_btn.val(wpoptimize.cancel);
482 - run_cache_preload_btn.data('running', true);
483 - }
484 - cache_preload_status_el.text(response.message);
485 - update_cache_size_information(response);
486 - });
520 + function update_cache_preload_status(response) {
521 + if (response.done) {
522 + run_cache_preload_btn.val(wpoptimize.run_now);
523 + run_cache_preload_btn.data('running', false);
524 + } else {
525 + run_cache_preload_btn.val(wpoptimize.cancel);
526 + run_cache_preload_btn.data('running', true);
527 + run_update_cache_preload_status();
528 + }
529 + cache_preload_status_el.text(response.message);
530 + update_cache_size_information(response);
487 531 }
488 532
489 533 /**
490 534 * Run update information about cache size.
@@ -494,7 +538,33 @@
494 538 function update_cache_size_information(response) {
495 539 $('#wpo_current_cache_size_information').text(wpoptimize.current_cache_size + ' ' + response.size);
496 540 $('#wpo_current_cache_file_count').text(wpoptimize.number_of_files + ' ' + response.file_count);
497 541 }
542 +
543 +
544 + $('#wpo-auto-preload-after-purge').on('click', function() {
545 + var clicked_btn = this;
546 + var success_icon = $(this).closest('.wpo-fieldgroup__subgroup').find('.dashicons-yes');
547 +
548 + clicked_btn.disabled = true;
549 +
550 + block_ui(wpoptimize.saving);
551 +
552 + send_command(
553 + 'save_cache_auto_preload_option',
554 + { enabled: !!clicked_btn.checked },
555 + function(response) {
556 + clicked_btn.disabled = false;
557 + $.unblockUI();
558 + if (response.success) {
559 + success_icon.show().fadeOut(1000);
560 + } else {
561 + clicked_btn.checked = !clicked_btn.checked;
562 + alert(response.message);
563 + }
564 +
565 + }
566 + );
567 + });
498 568
499 569 wp_optimize.cache_settings = gather_cache_settings;
500 570 };