Version Description
[2018.05.23] = * fixed several bugs related to notices, css minification and file paths * added more pcre.backtrack_limit and pcre.recursion_limit to avoid blank pages on some servers * added new option to defer the ignore list for pagespeed
Download this release
Release Info
Developer | Alignak |
Plugin | Fast Velocity Minify |
Version | 2.2.9 |
Comparing to | |
See all releases |
Code changes from version 2.2.8 to 2.2.9
- fvm.php +56 -4
- inc/functions-serverinfo.php +23 -15
- inc/functions.php +20 -5
- readme.txt +21 -2
fvm.php
CHANGED
@@ -5,7 +5,7 @@ Plugin URI: http://fastvelocity.com
|
|
5 |
Description: Improve your speed score on GTmetrix, Pingdom Tools and Google PageSpeed Insights by merging and minifying CSS and JavaScript files into groups, compressing HTML and other speed optimizations.
|
6 |
Author: Raul Peixoto
|
7 |
Author URI: http://fastvelocity.com
|
8 |
-
Version: 2.2.
|
9 |
License: GPL2
|
10 |
|
11 |
------------------------------------------------------------------------
|
@@ -114,6 +114,7 @@ $force_inline_css_footer = get_option('fastvelocity_min_force_inline_css_footer'
|
|
114 |
$force_inline_googlefonts = get_option('fastvelocity_min_force_inline_googlefonts');
|
115 |
$remove_googlefonts = get_option('fastvelocity_min_remove_googlefonts');
|
116 |
$defer_for_pagespeed = get_option('fastvelocity_min_defer_for_pagespeed');
|
|
|
117 |
$exclude_defer_login = get_option('fastvelocity_min_exclude_defer_login');
|
118 |
$preload = array_map('trim', explode("\n", get_option('fastvelocity_min_preload')));
|
119 |
$preconnect = array_map('trim', explode("\n", get_option('fastvelocity_min_preconnect')));
|
@@ -131,7 +132,7 @@ $exc = array('/html5shiv.js', '/html5shiv-printshiv.min.js', '/excanvas.js', '/a
|
|
131 |
if(!is_array($blacklist) || strlen(implode($blacklist)) == 0) { update_option('fastvelocity_min_blacklist', implode("\n", $exc)); }
|
132 |
|
133 |
# default ignore list
|
134 |
-
$exc = array('/Avada/assets/js/main.min.js', '/woocommerce-product-search/js/product-search.js', '/includes/builder/scripts/frontend-builder-scripts.js', '/assets/js/jquery.themepunch.tools.min.js');
|
135 |
if(!is_array($ignorelist) || strlen(implode($ignorelist)) == 0) { update_option('fastvelocity_min_ignorelist', implode("\n", $exc)); }
|
136 |
|
137 |
|
@@ -269,6 +270,7 @@ function fastvelocity_min_register_settings() {
|
|
269 |
register_setting('fvm-group', 'fastvelocity_min_force_inline_googlefonts');
|
270 |
register_setting('fvm-group', 'fastvelocity_min_remove_googlefonts');
|
271 |
register_setting('fvm-group', 'fastvelocity_min_defer_for_pagespeed');
|
|
|
272 |
register_setting('fvm-group', 'fastvelocity_min_exclude_defer_login');
|
273 |
register_setting('fvm-group', 'fastvelocity_min_preload');
|
274 |
register_setting('fvm-group', 'fastvelocity_min_preconnect');
|
@@ -559,6 +561,11 @@ Enable defer parsing of JS files globally <span class="note-info">[ Not all brow
|
|
559 |
Enable defer of JS for Pagespeed Insights <span class="note-info">[ Defer JS files for Pagespeed Insights only, <a target="_blank" href="https://www.chromestatus.com/feature/5718547946799104">except external scripts</a> (avoid using a CDN for JS files) ]</span></label>
|
560 |
<br />
|
561 |
|
|
|
|
|
|
|
|
|
|
|
562 |
<label for="fastvelocity_min_exclude_defer_jquery">
|
563 |
<input name="fastvelocity_min_exclude_defer_jquery" type="checkbox" id="fastvelocity_min_exclude_defer_jquery" value="1" <?php echo checked(1 == get_option('fastvelocity_min_exclude_defer_jquery'), true, false); ?> >
|
564 |
Skip deferring the jQuery library <span class="note-info">[ Will fix "undefined jQuery" errors on the Google Chrome console log ]</span></label>
|
@@ -1162,7 +1169,7 @@ if (stripos($tag, "\n") !== false) { return $tag; }
|
|
1162 |
|
1163 |
# print code if there are no linebreaks, or return
|
1164 |
if(!empty($tagdefer)) {
|
1165 |
-
$deferinsights = '<script type="text/javascript">if(navigator.userAgent.match(/speed|gtmetrix|x11.*firefox\/53|x11.*chrome\/39/i)){document.write('.json_encode($tagdefer).');}else{document.write('.json_encode($tag).');}</script>';
|
1166 |
return preg_replace('#<script(.*?)>(.*?)</script>#is', $deferinsights, $tag);
|
1167 |
}
|
1168 |
|
@@ -1763,10 +1770,55 @@ echo implode('', $meta);
|
|
1763 |
}
|
1764 |
|
1765 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1766 |
# remove query from static assets and process defering (if enabled)
|
1767 |
if (!is_admin()) {
|
1768 |
-
add_filter('script_loader_tag', 'fastvelocity_min_defer_js', 10, 3);
|
1769 |
add_filter('style_loader_src', 'fastvelocity_remove_cssjs_ver', 10, 2);
|
|
|
|
|
1770 |
}
|
1771 |
|
1772 |
|
5 |
Description: Improve your speed score on GTmetrix, Pingdom Tools and Google PageSpeed Insights by merging and minifying CSS and JavaScript files into groups, compressing HTML and other speed optimizations.
|
6 |
Author: Raul Peixoto
|
7 |
Author URI: http://fastvelocity.com
|
8 |
+
Version: 2.2.9
|
9 |
License: GPL2
|
10 |
|
11 |
------------------------------------------------------------------------
|
114 |
$force_inline_googlefonts = get_option('fastvelocity_min_force_inline_googlefonts');
|
115 |
$remove_googlefonts = get_option('fastvelocity_min_remove_googlefonts');
|
116 |
$defer_for_pagespeed = get_option('fastvelocity_min_defer_for_pagespeed');
|
117 |
+
$defer_for_pagespeed_optimize = get_option('fastvelocity_min_defer_for_pagespeed_optimize');
|
118 |
$exclude_defer_login = get_option('fastvelocity_min_exclude_defer_login');
|
119 |
$preload = array_map('trim', explode("\n", get_option('fastvelocity_min_preload')));
|
120 |
$preconnect = array_map('trim', explode("\n", get_option('fastvelocity_min_preconnect')));
|
132 |
if(!is_array($blacklist) || strlen(implode($blacklist)) == 0) { update_option('fastvelocity_min_blacklist', implode("\n", $exc)); }
|
133 |
|
134 |
# default ignore list
|
135 |
+
$exc = array('/Avada/assets/js/main.min.js', '/woocommerce-product-search/js/product-search.js', '/includes/builder/scripts/frontend-builder-scripts.js', '/assets/js/jquery.themepunch.tools.min.js', '/js/TweenMax.min.js');
|
136 |
if(!is_array($ignorelist) || strlen(implode($ignorelist)) == 0) { update_option('fastvelocity_min_ignorelist', implode("\n", $exc)); }
|
137 |
|
138 |
|
270 |
register_setting('fvm-group', 'fastvelocity_min_force_inline_googlefonts');
|
271 |
register_setting('fvm-group', 'fastvelocity_min_remove_googlefonts');
|
272 |
register_setting('fvm-group', 'fastvelocity_min_defer_for_pagespeed');
|
273 |
+
register_setting('fvm-group', 'fastvelocity_min_defer_for_pagespeed_optimize');
|
274 |
register_setting('fvm-group', 'fastvelocity_min_exclude_defer_login');
|
275 |
register_setting('fvm-group', 'fastvelocity_min_preload');
|
276 |
register_setting('fvm-group', 'fastvelocity_min_preconnect');
|
561 |
Enable defer of JS for Pagespeed Insights <span class="note-info">[ Defer JS files for Pagespeed Insights only, <a target="_blank" href="https://www.chromestatus.com/feature/5718547946799104">except external scripts</a> (avoid using a CDN for JS files) ]</span></label>
|
562 |
<br />
|
563 |
|
564 |
+
<label for="fastvelocity_min_defer_for_pagespeed_optimize">
|
565 |
+
<input name="fastvelocity_min_defer_for_pagespeed_optimize" type="checkbox" id="fastvelocity_min_defer_for_pagespeed_optimize" value="1" <?php echo checked(1 == get_option('fastvelocity_min_defer_for_pagespeed_optimize'), true, false); ?>>
|
566 |
+
Also defer the "ignore list" for Pagespeed Insights <span class="note-info">[ Defer JS files on the ignore list for Pagespeed Insights only ]</span></label>
|
567 |
+
<br />
|
568 |
+
|
569 |
<label for="fastvelocity_min_exclude_defer_jquery">
|
570 |
<input name="fastvelocity_min_exclude_defer_jquery" type="checkbox" id="fastvelocity_min_exclude_defer_jquery" value="1" <?php echo checked(1 == get_option('fastvelocity_min_exclude_defer_jquery'), true, false); ?> >
|
571 |
Skip deferring the jQuery library <span class="note-info">[ Will fix "undefined jQuery" errors on the Google Chrome console log ]</span></label>
|
1169 |
|
1170 |
# print code if there are no linebreaks, or return
|
1171 |
if(!empty($tagdefer)) {
|
1172 |
+
$deferinsights = '<script type="text/javascript">if(navigator.userAgent.match(/speed|Lighthouse|gtmetrix|x11.*firefox\/53|x11.*chrome\/39/i)){document.write('.json_encode($tagdefer).');}else{document.write('.json_encode($tag).');}</script>';
|
1173 |
return preg_replace('#<script(.*?)>(.*?)</script>#is', $deferinsights, $tag);
|
1174 |
}
|
1175 |
|
1770 |
}
|
1771 |
|
1772 |
|
1773 |
+
|
1774 |
+
###########################################
|
1775 |
+
# optimize the ignore list for pagespeed insights
|
1776 |
+
###########################################
|
1777 |
+
function fastvelocity_min_defer_js_optimize($tag, $handle, $src) {
|
1778 |
+
global $defer_for_pagespeed, $defer_for_pagespeed_optimize, $fvm_fix_editor;
|
1779 |
+
|
1780 |
+
# return if there are linebreaks (will break document.write)
|
1781 |
+
if (stripos($tag, "\n") !== false) { return $tag; }
|
1782 |
+
|
1783 |
+
# fix page editors
|
1784 |
+
if($fvm_fix_editor == true && is_user_logged_in()) { return $tag; }
|
1785 |
+
|
1786 |
+
# return if external script url https://www.chromestatus.com/feature/5718547946799104
|
1787 |
+
if (fvm_is_local_domain($src) == true) { return $tag; }
|
1788 |
+
|
1789 |
+
# exclude ignored scripts
|
1790 |
+
if(substr($handle, 0, 4) != "fvm-" && $defer_for_pagespeed == true && $defer_for_pagespeed_optimize == true) {
|
1791 |
+
|
1792 |
+
# get available nodes and add create with defer tag (if not async)
|
1793 |
+
$dom = new DOMDocument();
|
1794 |
+
libxml_use_internal_errors(true);
|
1795 |
+
@$dom->loadHTML($tag);
|
1796 |
+
$nodes = $dom->getElementsByTagName('script');
|
1797 |
+
$tagdefer = '';
|
1798 |
+
if ($nodes->length != 0) {
|
1799 |
+
$node = $dom->getElementsByTagName('script')->item(0);
|
1800 |
+
if (!$node->hasAttribute('async')) { $node->setAttribute('defer','defer'); };
|
1801 |
+
$tagdefer = $dom->saveHTML($node);
|
1802 |
+
}
|
1803 |
+
|
1804 |
+
# print code if there are no linebreaks, or return
|
1805 |
+
if(!empty($tagdefer)) {
|
1806 |
+
$deferinsights = '<script type="text/javascript">if(!navigator.userAgent.match(/speed|Lighthouse|gtmetrix|x11.*firefox\/53|x11.*chrome\/39/i)){document.write('.json_encode($tag).');}</script>';
|
1807 |
+
return preg_replace('#<script(.*?)>(.*?)</script>#is', $deferinsights, $tag);
|
1808 |
+
}
|
1809 |
+
|
1810 |
+
}
|
1811 |
+
|
1812 |
+
# fallback
|
1813 |
+
return $tag;
|
1814 |
+
}
|
1815 |
+
|
1816 |
+
|
1817 |
# remove query from static assets and process defering (if enabled)
|
1818 |
if (!is_admin()) {
|
|
|
1819 |
add_filter('style_loader_src', 'fastvelocity_remove_cssjs_ver', 10, 2);
|
1820 |
+
add_filter('script_loader_tag', 'fastvelocity_min_defer_js', 10, 3);
|
1821 |
+
add_filter('script_loader_tag', 'fastvelocity_min_defer_js_optimize', 10, 3);
|
1822 |
}
|
1823 |
|
1824 |
|
inc/functions-serverinfo.php
CHANGED
@@ -108,17 +108,21 @@ function fvm_get_generalinfo() {
|
|
108 |
### Function: Format Bytes Into TiB/GiB/MiB/KiB/Bytes
|
109 |
if(!function_exists('fvm_format_filesize')) {
|
110 |
function fvm_format_filesize($rawSize) {
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
|
|
|
|
|
|
|
|
122 |
return __('unknown', 'fvm-serverinfo');
|
123 |
}
|
124 |
}
|
@@ -232,7 +236,7 @@ if(!function_exists('fvm_get_mysql_data_usage')) {
|
|
232 |
$data_usage = '';
|
233 |
$tablesstatus = $wpdb->get_results("SHOW TABLE STATUS");
|
234 |
foreach($tablesstatus as $tablestatus) {
|
235 |
-
|
236 |
}
|
237 |
if (!$data_usage) {
|
238 |
$data_usage = __('N/A', 'fvm-serverinfo');
|
@@ -249,7 +253,7 @@ if(!function_exists('fvm_get_mysql_index_usage')) {
|
|
249 |
$index_usage = '';
|
250 |
$tablesstatus = $wpdb->get_results("SHOW TABLE STATUS");
|
251 |
foreach($tablesstatus as $tablestatus) {
|
252 |
-
$index_usage += $tablestatus->Index_length;
|
253 |
}
|
254 |
if (!$index_usage){
|
255 |
$index_usage = __('N/A', 'fvm-serverinfo');
|
@@ -324,8 +328,12 @@ if(!function_exists('fvm_get_serverload')) {
|
|
324 |
} else {
|
325 |
$data = @system('uptime');
|
326 |
preg_match('/(.*):{1}(.*)/', $data, $matches);
|
327 |
-
|
328 |
-
|
|
|
|
|
|
|
|
|
329 |
}
|
330 |
}
|
331 |
if(empty($server_load)) {
|
108 |
### Function: Format Bytes Into TiB/GiB/MiB/KiB/Bytes
|
109 |
if(!function_exists('fvm_format_filesize')) {
|
110 |
function fvm_format_filesize($rawSize) {
|
111 |
+
if(is_numeric($rawSize)) {
|
112 |
+
if($rawSize / 1099511627776 > 1) {
|
113 |
+
return number_format_i18n($rawSize/1099511627776, 1).' '.__('TiB', 'fvm-serverinfo');
|
114 |
+
} elseif($rawSize / 1073741824 > 1) {
|
115 |
+
return number_format_i18n($rawSize/1073741824, 1).' '.__('GiB', 'fvm-serverinfo');
|
116 |
+
} elseif($rawSize / 1048576 > 1) {
|
117 |
+
return number_format_i18n($rawSize/1048576, 1).' '.__('MiB', 'fvm-serverinfo');
|
118 |
+
} elseif($rawSize / 1024 > 1) {
|
119 |
+
return number_format_i18n($rawSize/1024, 1).' '.__('KiB', 'fvm-serverinfo');
|
120 |
+
} elseif($rawSize > 1) {
|
121 |
+
return number_format_i18n($rawSize, 0).' '.__('bytes', 'fvm-serverinfo');
|
122 |
+
} else {
|
123 |
+
return __('unknown', 'fvm-serverinfo');
|
124 |
+
}
|
125 |
+
} else {
|
126 |
return __('unknown', 'fvm-serverinfo');
|
127 |
}
|
128 |
}
|
236 |
$data_usage = '';
|
237 |
$tablesstatus = $wpdb->get_results("SHOW TABLE STATUS");
|
238 |
foreach($tablesstatus as $tablestatus) {
|
239 |
+
if(is_numeric($tablestatus->Data_length)) { $data_usage += $tablestatus->Data_length; } else { $data_usage += 0; }
|
240 |
}
|
241 |
if (!$data_usage) {
|
242 |
$data_usage = __('N/A', 'fvm-serverinfo');
|
253 |
$index_usage = '';
|
254 |
$tablesstatus = $wpdb->get_results("SHOW TABLE STATUS");
|
255 |
foreach($tablesstatus as $tablestatus) {
|
256 |
+
if(is_numeric($tablestatus->Index_length)) { $index_usage += $tablestatus->Index_length; } else { $index_usage += 0; }
|
257 |
}
|
258 |
if (!$index_usage){
|
259 |
$index_usage = __('N/A', 'fvm-serverinfo');
|
328 |
} else {
|
329 |
$data = @system('uptime');
|
330 |
preg_match('/(.*):{1}(.*)/', $data, $matches);
|
331 |
+
if(isset($matches[2])) {
|
332 |
+
$load_arr = explode(',', $matches[2]);
|
333 |
+
$server_load = trim($load_arr[0]);
|
334 |
+
} else {
|
335 |
+
$server_load = __('N/A', 'fvm-serverinfo');
|
336 |
+
}
|
337 |
}
|
338 |
}
|
339 |
if(empty($server_load)) {
|
inc/functions.php
CHANGED
@@ -3,6 +3,10 @@
|
|
3 |
# handle better utf-8 and unicode encoding
|
4 |
if(function_exists('mb_internal_encoding')) { mb_internal_encoding('UTF-8'); }
|
5 |
|
|
|
|
|
|
|
|
|
6 |
# Consider fallback to PHP Minify [2017.12.17] from https://github.com/matthiasmullie/minify (must be defined on the outer scope)
|
7 |
$path = $plugindir . 'libs/matthiasmullie';
|
8 |
require_once $path . '/minify/src/Minify.php';
|
@@ -143,8 +147,14 @@ function fastvelocity_min_in_arrayi($hurl, $ignore){
|
|
143 |
|
144 |
# better compatibility urls, fix bootstrap 4 svg images https://www.w3.org/TR/SVG/intro.html#NamespaceAndDTDIdentifiers
|
145 |
function fvm_compat_urls($code) {
|
146 |
-
$
|
147 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
148 |
return $code;
|
149 |
}
|
150 |
|
@@ -161,7 +171,10 @@ return fvm_compat_urls($css);
|
|
161 |
|
162 |
# find if we are running windows
|
163 |
function fvm_server_is_windows() {
|
164 |
-
|
|
|
|
|
|
|
165 |
if(function_exists('php_uname')) {
|
166 |
$os = @php_uname('s');
|
167 |
if (stripos($os, 'Windows') !== false) {
|
@@ -298,7 +311,9 @@ global $wp_domain;
|
|
298 |
$css = fastvelocity_min_remove_utf8_bom($css);
|
299 |
|
300 |
# fix url paths
|
301 |
-
if(!empty($url)) {
|
|
|
|
|
302 |
|
303 |
# remove query strings from fonts (for better seo, but add a small cache buster based on most recent updates)
|
304 |
$ctime = get_option('fvm-last-cache-update', '0'); # last update or zero
|
@@ -804,7 +819,7 @@ function fastvelocity_godaddy_request( $method, $url = null ) {
|
|
804 |
|
805 |
function fastvelocity_purge_others(){
|
806 |
|
807 |
-
#
|
808 |
if (function_exists('wp_cache_flush')) {
|
809 |
wp_cache_flush();
|
810 |
}
|
3 |
# handle better utf-8 and unicode encoding
|
4 |
if(function_exists('mb_internal_encoding')) { mb_internal_encoding('UTF-8'); }
|
5 |
|
6 |
+
# must have
|
7 |
+
@ini_set('pcre.backtrack_limit',5000000);
|
8 |
+
@ini_set('pcre.recursion_limit',5000000);
|
9 |
+
|
10 |
# Consider fallback to PHP Minify [2017.12.17] from https://github.com/matthiasmullie/minify (must be defined on the outer scope)
|
11 |
$path = $plugindir . 'libs/matthiasmullie';
|
12 |
require_once $path . '/minify/src/Minify.php';
|
147 |
|
148 |
# better compatibility urls, fix bootstrap 4 svg images https://www.w3.org/TR/SVG/intro.html#NamespaceAndDTDIdentifiers
|
149 |
function fvm_compat_urls($code) {
|
150 |
+
$default_protocol = get_option('fastvelocity_min_default_protocol', 'dynamic');
|
151 |
+
if($default_protocol == 'dynamic' || empty($default_protocol)) {
|
152 |
+
$default_protocol = '//';
|
153 |
+
} else {
|
154 |
+
$default_protocol = $default_protocol.'://';
|
155 |
+
}
|
156 |
+
$code = str_ireplace(array('http://', 'https://'), $default_protocol, $code);
|
157 |
+
$code = str_ireplace($default_protocol.'www.w3.org/2000/svg', 'http://www.w3.org/2000/svg', $code);
|
158 |
return $code;
|
159 |
}
|
160 |
|
171 |
|
172 |
# find if we are running windows
|
173 |
function fvm_server_is_windows() {
|
174 |
+
# PHP 7.2.0+
|
175 |
+
if(defined('PHP_OS_FAMILY')) {
|
176 |
+
if(strtolower(PHP_OS_FAMILY) == 'windows') { return true; }
|
177 |
+
}
|
178 |
if(function_exists('php_uname')) {
|
179 |
$os = @php_uname('s');
|
180 |
if (stripos($os, 'Windows') !== false) {
|
311 |
$css = fastvelocity_min_remove_utf8_bom($css);
|
312 |
|
313 |
# fix url paths
|
314 |
+
if(!empty($url)) {
|
315 |
+
$css = preg_replace("/url\(\s*['\"]?(?!data:)(?!http)(?![\/'\"])(.+?)['\"]?\s*\)/ui", "url(".dirname($url)."/$1)", $css);
|
316 |
+
}
|
317 |
|
318 |
# remove query strings from fonts (for better seo, but add a small cache buster based on most recent updates)
|
319 |
$ctime = get_option('fvm-last-cache-update', '0'); # last update or zero
|
819 |
|
820 |
function fastvelocity_purge_others(){
|
821 |
|
822 |
+
# wordpress default cache
|
823 |
if (function_exists('wp_cache_flush')) {
|
824 |
wp_cache_flush();
|
825 |
}
|
readme.txt
CHANGED
@@ -2,8 +2,8 @@
|
|
2 |
Contributors: Alignak
|
3 |
Tags: PHP Minify, YUI Compressor, GTmetrix, Pingdom, Pagespeed, CSS Merging, JS Merging, CSS Minification, JS Minification, Speed Optimization, HTML Minification, Performance
|
4 |
Requires at least: 4.5
|
5 |
-
Stable tag: 2.
|
6 |
-
Tested up to: 4.9.
|
7 |
License: GPLv3 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
9 |
|
@@ -44,10 +44,20 @@ I can offer you aditional `custom made` optimization on top of this plugin. If y
|
|
44 |
* Support for gzip_static on Nginx
|
45 |
* Support for the CDN Enabler plugin
|
46 |
* Auto purging of cache files on W3 Total Cache, WP Supercache, WP Rocket, Wp Fastest Cache, Cachify, Comet Cache, Zen Cache, LiteSpeed Cache, Nginx Cache (by Till Krüss ), SG Optimizer, Godaddy Managed WordPress Hosting and WP Engine (read the FAQs)
|
|
|
47 |
* Support for preconnect and preload headers
|
48 |
* and some more...
|
49 |
|
50 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
= Notes =
|
52 |
* The JavaScript minification is by [PHP Minify](https://github.com/matthiasmullie/minify)
|
53 |
* The alternative JavaScript minification is by [YUI Compressor](http://yui.github.io/yuicompressor/)
|
@@ -256,6 +266,15 @@ Note: Kindly re-save all options and purge all caches (the plugin cache as well
|
|
256 |
|
257 |
== Changelog ==
|
258 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
259 |
= 2.2.8 [2018.01.21] =
|
260 |
* rollback to 2.2.6 + bugfixes
|
261 |
|
2 |
Contributors: Alignak
|
3 |
Tags: PHP Minify, YUI Compressor, GTmetrix, Pingdom, Pagespeed, CSS Merging, JS Merging, CSS Minification, JS Minification, Speed Optimization, HTML Minification, Performance
|
4 |
Requires at least: 4.5
|
5 |
+
Stable tag: 2.3.0
|
6 |
+
Tested up to: 4.9.6
|
7 |
License: GPLv3 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
9 |
|
44 |
* Support for gzip_static on Nginx
|
45 |
* Support for the CDN Enabler plugin
|
46 |
* Auto purging of cache files on W3 Total Cache, WP Supercache, WP Rocket, Wp Fastest Cache, Cachify, Comet Cache, Zen Cache, LiteSpeed Cache, Nginx Cache (by Till Krüss ), SG Optimizer, Godaddy Managed WordPress Hosting and WP Engine (read the FAQs)
|
47 |
+
* WP CLI support
|
48 |
* Support for preconnect and preload headers
|
49 |
* and some more...
|
50 |
|
51 |
|
52 |
+
= WP-CLI Commands =
|
53 |
+
* Purge all caches: `wp fvm purge`
|
54 |
+
* Purge all caches on a network site: `wp --url=blog.example.com fvm purge`
|
55 |
+
* Purge all caches on the entire network (linux): `wp site list --field=url | xargs -n1 -I % wp --url=% fvm purge`
|
56 |
+
* Get cache size: `wp fvm stats`
|
57 |
+
* Get cache size on a network site: `wp --url=blog.example.com fvm stats`
|
58 |
+
* Get cache size on each site (linux): `wp site list --field=url | xargs -n1 -I % wp --url=% fvm stats`
|
59 |
+
|
60 |
+
|
61 |
= Notes =
|
62 |
* The JavaScript minification is by [PHP Minify](https://github.com/matthiasmullie/minify)
|
63 |
* The alternative JavaScript minification is by [YUI Compressor](http://yui.github.io/yuicompressor/)
|
266 |
|
267 |
== Changelog ==
|
268 |
|
269 |
+
= 2.3.0 [2018.05.24] =
|
270 |
+
* added wp cli support for purge cache (usage: wp fvm purge)
|
271 |
+
* added wp cli support for getting the cache size (usage: wp fvm stats)
|
272 |
+
|
273 |
+
= 2.2.9 [2018.05.23] =
|
274 |
+
* fixed several bugs related to notices, css minification and file paths
|
275 |
+
* added more pcre.backtrack_limit and pcre.recursion_limit to avoid blank pages on some servers
|
276 |
+
* added new option to defer the ignore list for pagespeed
|
277 |
+
|
278 |
= 2.2.8 [2018.01.21] =
|
279 |
* rollback to 2.2.6 + bugfixes
|
280 |
|