Fast Velocity Minify - Version 2.3.0

Version Description

[2018.05.24] = * added wp cli support for purge cache (usage: wp fvm purge) * added wp cli support for getting the cache size (usage: wp fvm stats)

Download this release

Release Info

Developer Alignak
Plugin Icon 128x128 Fast Velocity Minify
Version 2.3.0
Comparing to
See all releases

Code changes from version 2.2.9 to 2.3.0

Files changed (4) hide show
  1. fvm.php +11 -3
  2. inc/functions-cli.php +40 -0
  3. inc/functions.php +6 -4
  4. readme.txt +38 -33
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
9
  License: GPL2
10
 
11
  ------------------------------------------------------------------------
@@ -60,11 +60,19 @@ function fvm_compat_checker() {
60
  add_action('admin_init', 'fvm_compat_checker');
61
 
62
 
63
- # get the plugin directory and include functions
64
- $plugindir = plugin_dir_path( __FILE__ ); # with trailing slash
 
 
65
  include($plugindir.'inc/functions.php');
66
  include($plugindir.'inc/functions-serverinfo.php');
67
 
 
 
 
 
 
 
68
  # get cache directories and urls
69
  $cachepath = fvm_cachepath();
70
  $tmpdir = $cachepath['tmpdir'];
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.3.0
9
  License: GPL2
10
 
11
  ------------------------------------------------------------------------
60
  add_action('admin_init', 'fvm_compat_checker');
61
 
62
 
63
+ # get the plugin directory
64
+ $plugindir = plugin_dir_path( __FILE__ ); # prints with trailing slash
65
+
66
+ # reusable functions
67
  include($plugindir.'inc/functions.php');
68
  include($plugindir.'inc/functions-serverinfo.php');
69
 
70
+ # wp-cli support
71
+ if ( defined( 'WP_CLI' ) && WP_CLI ) {
72
+ include($plugindir.'inc/functions-cli.php');
73
+ }
74
+
75
+
76
  # get cache directories and urls
77
  $cachepath = fvm_cachepath();
78
  $tmpdir = $cachepath['tmpdir'];
inc/functions-cli.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( defined( 'WP_CLI' ) && WP_CLI ) {
4
+
5
+
6
+ ###################################################
7
+ # extend wp-cli to purge cache, usage: wp fvm purge
8
+ ###################################################
9
+
10
+ class fastvelocity_WPCLI {
11
+
12
+ # purge files + cache
13
+ public function purge() {
14
+ fvm_purge_all();
15
+ fastvelocity_purge_others();
16
+ WP_CLI::success('FVM and other caches were purged.');
17
+ }
18
+
19
+ # get cache size
20
+ public function stats() {
21
+ $stats = fastvelocity_get_cachestats();
22
+ WP_CLI::success('FVM is using '.$stats.' for cache.');
23
+ }
24
+
25
+ }
26
+
27
+ # add commands
28
+ WP_CLI::add_command( 'fvm', 'fastvelocity_WPCLI' );
29
+
30
+
31
+
32
+
33
+
34
+
35
+ ###################################################
36
+
37
+ }
38
+
39
+
40
+
inc/functions.php CHANGED
@@ -596,12 +596,14 @@ function fastvelocity_min_readme($url) {
596
  $file = str_replace('www.', 'http://www.', $file);
597
  $file = preg_replace('#(^|[^\"=]{1})(http://|ftp://|mailto:|https://)([^\s<>]+)([\s\n<>]|$)#', '$1<a target="_blank" href="$2$3">$2$3</a>$4', $file);
598
 
 
 
 
599
  # extract faqs
600
  $prefix = "Frequently Asked Questions";
601
  $faq = substr($file, strpos($file, $prefix) + strlen($prefix));
602
  $faq = substr($faq, 0, strpos($faq, '<p><h3>'));
603
-
604
-
605
  return trim($faq);
606
  }
607
 
@@ -677,8 +679,6 @@ foreach( $transient_keys as $t ) { delete_transient( $t ); } # delete
677
  # purge all caches
678
  function fvm_purge_all() {
679
 
680
-
681
-
682
  # get cache directories and urls
683
  $cachepath = fvm_cachepath();
684
  $tmpdir = $cachepath['tmpdir'];
@@ -892,3 +892,5 @@ if (method_exists('WpeCommon', 'purge_varnish_cache')) { WpeCommon::purge_varnis
892
  }
893
 
894
  }
 
 
596
  $file = str_replace('www.', 'http://www.', $file);
597
  $file = preg_replace('#(^|[^\"=]{1})(http://|ftp://|mailto:|https://)([^\s<>]+)([\s\n<>]|$)#', '$1<a target="_blank" href="$2$3">$2$3</a>$4', $file);
598
 
599
+ # extra linebreaks
600
+ $file = str_replace('<p>...</p>', "", $file);
601
+
602
  # extract faqs
603
  $prefix = "Frequently Asked Questions";
604
  $faq = substr($file, strpos($file, $prefix) + strlen($prefix));
605
  $faq = substr($faq, 0, strpos($faq, '<p><h3>'));
606
+
 
607
  return trim($faq);
608
  }
609
 
679
  # purge all caches
680
  function fvm_purge_all() {
681
 
 
 
682
  # get cache directories and urls
683
  $cachepath = fvm_cachepath();
684
  $tmpdir = $cachepath['tmpdir'];
892
  }
893
 
894
  }
895
+
896
+
readme.txt CHANGED
@@ -80,9 +80,14 @@ I can offer you aditional `custom made` optimization on top of this plugin. If y
80
 
81
  == Frequently Asked Questions ==
82
 
 
 
 
 
 
83
  = How can I exclude certain assets by wildcard? =
84
 
85
- Each line on the ignore list will try to match a substring against all CSS or JS files, for example: `//yoursite.com/wp-content/plugins/some-plugin/js/` will ignore all files inside that directory. You can also shorten the url like `/some-plugin/js/` and then it will match any css or js url that has `/some-plugin/js/` on the path. Obviously, doing `/js/` would match any files inside any "/js/" directory and in any location, so to avoid unexpected situations please always use the longest, most specific path you can use.
86
 
87
  ...
88
 
@@ -93,10 +98,10 @@ The ignore list may be working, just try to use partial paths (see wildcard help
93
  ...
94
 
95
 
96
- = Why are there several or lot's of JS and CSS files listed on the status page, or why the cache directory takes so much space? =
97
 
98
  Well, some sites and themes have a combined CSS size above 1+ MB, so when you have 200 files, that's 200+ MB.
99
- Different pages may need different JS and CSS files per page, post, category, tag, homepage or even custom post types, but if the requirements never change and you always load the exact same files on every page, you won't see as many files. Likewise, if you have some dynamic url for CSS or JS that always changes in each pageview (the query var for example), you must add it to the ignore list (else it will generate a new cache file every pageview).
100
 
101
  ...
102
 
@@ -108,15 +113,15 @@ Yes, but it's recommended that you purge the cache (from the plugin status page)
108
 
109
  = Is it compatible with other caching plugins? =
110
 
111
- You must disable any features on your theme or cache plugins, that perform minification of css, html and js.
112
- The plugin will try to automatically purge several popular cache plugins, however we still recommend you to purge all caches (on whatever you use) if you also manually purge the cache on the plugin settings for some reason.
113
  The automatic purge is active for the following plugins and hosting: W3 Total Cache, WP Supercache, WP Rocket, Wp Fastest Cache, Cachify, Comet Cache, Zen Cache, LiteSpeed Cache, SG Optimizer, Godaddy Managed WordPress Hosting and WP Engine
114
 
115
  ...
116
 
117
  = Is it resource intensive, or will it use too much CPU on my shared hosting plan? =
118
 
119
- No it's not. On the first run, each single file is minified into an intermediate cache. When a new group of files is found, it reuses those files and merges them into a new static cache file. All pages that request the same group of CSS or JS files will also make use of that file.
120
 
121
  ...
122
 
@@ -126,57 +131,57 @@ Yes, it generates a new cache file for every different set of JS and CSS require
126
 
127
  ...
128
 
129
- = Is it compatible with Adsense and other ad networks? =
130
 
131
- The plugin is compatible with any add network but also depends on how you're loading the ads into the site. We only merge and minify css and javascript files enqueued in the header and footer that match your own domain name... which would exclude any external ads. If you're using a plugin that uses JS to insert the ads on the page, there could be issues. Please report on the support forum if you found such case.
132
 
133
  ...
134
 
135
  = After installing, why did my site feels slow to load? =
136
 
137
- The cache regeration happen's once per url or if the included CSS + JS files change. If you need the same set of CSS and JS files in every page, the cache file will only be generated once and reused for all other pages, however if you have a CSS or JS that is generated dynamically and uses a time based query string, (url changes on every pageview), you must add it to the ignore list by wildcard.
138
 
139
  ...
140
 
141
- = How do I use the precompressed files with gzip_static on Nginx? =
142
 
143
  When we merge and minify the css and js files, we also create a `.gz` file to be used with `gzip_static` on Nginx. You need to enable this feature on your Nginx configuration file if you want to make use of it.
144
 
145
  ...
146
 
147
- = Where is the YUI Compressor option gone to? =
148
 
149
- This functionality depends on wheter you have exec and java available on your system and PHP can detect it or not. It will be visible on the basic Settings page under the JavaScript Options section and it's available for JS files only.
150
 
151
  ...
152
 
153
  = After installing, why are some images and sliders not working? =
154
 
155
- a) You cannot do double minification as it will break things, so make sure you have disabled any features on your theme or other plugins, that perform minification of css, html and js files.
156
 
157
  b) Are you trying to use the defer JS or CSS options, without understanding exactly how it works? Be advised that most themes do not work properly with those options on.
158
 
159
- c) The plugin relies on PHP Minify to minify javascript and css files, however it's not a perfect library and there are plugins that are already minified and do not output a min.js or min.css name and end up being minified again. Try to disable minification on JS and CSS files and purge the cache.
160
 
161
- d) Sometimes a plugin conflicts with another when merged. Try to disable CSS processing first and see if it works. Try to disable JS processing second and see if it works. Try to disable HTML minification last and see if it works. If one of those work, you know there's a conflict.
162
 
163
- e) If you have a conflict, try to add each CSS and each JS to the ignore list, one by one until you find the one that causes the conflict. If you have no idea which files to add, check the log file on the status page for a list of files.
164
 
165
  ...
166
 
167
- = Why are some of the CSS and JS files not being merged ? =
168
 
169
  The plugin only processes (same domain) JS and CSS files enqueued using the official method outlined here: https://developer.wordpress.org/themes/basics/including-css-javascript/
170
 
171
- Some developers enqueue all files properly but may still "print" conditional tags directly in the header, while they should be following the example as explained on the codex: https://developer.wordpress.org/reference/functions/wp_script_add_data/
172
 
173
  Because "printing CSS and JS tags on the header and footer is evil" (seriously), we cannot capture those files and merge them together.
174
 
175
- There are also specific ways to enqueue files meant to be loaded for IE users only, mobile users, desktop users, printers, etc, else those may be merged together and break things. There is a blacklist and default ignore list on the PRO tab because of this.
176
 
177
  ...
178
 
179
- = How can I load CSS async, get the critical path or why is there a flash of unstyle content when I enable this? =
180
 
181
  This is an advanced option for highly skilled developers. Do not try to fiddle with these settings if you are not one, as it will almost certainly break your site layout and functionality.
182
 
@@ -186,29 +191,29 @@ Loading CSS async only works properly and consistently, when you have one single
186
 
187
  = How to undo all changes done by the plugin? =
188
 
189
- The plugin itself doesn't do any "changes" to your site and all original files are untouched. It intercepts the enqueued CSS and JS files, processes and hides them, while enqueuing the newly optimized cached version of those files. As with any plugin, simply disable or uninstall the plugin, purge all caches you may have in use (plugins, server, cloudflare, etc) and the site will go back to what it was before installing it. The plugin doesn't delete anything from the database or modify any of your files.
190
 
191
  ...
192
 
193
  = Why is it that even though I have disabled or deleted the plugin, the design is still broken? =
194
 
195
- Some "cheap" or so called "optimized" hosting providers, implement a misconfigured and agressive cache on their servers, and then are also "smart" enough to ignore your multiple cache purge requests if those are too frequent.
196
 
197
- Some providers use a "deploy system", where you upload / replace / delete the files via sftp, but those are not reflected on the live site immediatly. This means that in some cases, you can delete your whole wordpress instalation via sftp, and the site still works perfectly fine even after purging the cache.
198
 
199
  You may have deleted the physical files from the disk, but that's either just some random storage they gave you and that they sync to the main server every few hours, or it may be the actual live server but with a file cache layer on top of it (so the old code keeps running even though you have deleted the files).
200
 
201
- The only solution is to contact your hosting company and ask them why you have deleted the plugin and purged your cache, but the live site doesn't reflect the changes.
202
 
203
  Providers well known to have this issue are hostgator and iPage (please report others if you find them).
204
 
205
  ...
206
 
207
- = Why is my Visual Composer, or Page Editor not working ? =
208
 
209
- Some plugins and themes need to edit the layout and styles on the frontend. When they need to do that, they enqueue several extra js and css files that are caught by this plugin and get merged together, when in fact those need to load seperatly. If you encounter such issue of your page editor not working on the frontend, kindly enable the "Fix Page Editors" and purge your caches.
210
 
211
- This option hides all optimization from logged in users, so it's as iff the plugin has been disabled. Not logged in users and search engines, still see the optimized version.
212
 
213
  ...
214
 
@@ -218,7 +223,7 @@ Certain themes and plugins, either load large images or sliders on the homepage.
218
 
219
  While this may not work when the images are large, you can use the "Preload Images" for the first relevant images that load above the fold, such as the logo or the first image of a slider. Please note however, this is for images that show up in all pages, not just the homepage.
220
 
221
- Don't put too many images here as those are downloaded in high priority and it will slow down the rest of the page load.
222
 
223
  ...
224
 
@@ -236,9 +241,9 @@ Before getting angry because you have no answer within a few hours (even with pa
236
 
237
  The plugins directory is an open source, free service where developers and programmers contribute (on their free time) with plugins that can be downloaded and installed by anyone "at their own risk" and are all released under the GPL license.
238
 
239
- While all plugins have to be approved and reviewed by the wordpress team before being published ( for dangerous code, spam, etc ) this doesn't change the license or add any warranty. All plugins are provided as they are, free of charge and should be used at your own risk (so you should make backups before installing any plugin or performing updates) and it's your sole responsability if you break your site after installing a plugin from the plugins directory.
240
 
241
- Support is provided by plugin authors on their free time and without warranty of a reply, so you can experience different levels of support level from plugin to plugin. As the author of this plugin I strive to provide support on a daily basis and I can take a look and help you with some issues related with my plugin, but please note that this is done out of my goodwill and in no way I have any legal or moral obligation for doing this. I'm also available for hiring if you need custom made speed optimizations (check my profile links).
242
 
243
  For a full version of the license, please read: https://wordpress.org/about/gpl/
244
 
@@ -246,14 +251,14 @@ For a full version of the license, please read: https://wordpress.org/about/gpl/
246
 
247
  = Where can I get support or report bugs? =
248
 
249
- You can get support on the official wordpress plugin page at: https://wordpress.org/support/plugin/fast-velocity-minify
250
- You can also see my profile and check my links if you wish to hire me for custom speed optimization on wordpress or extra features.
251
 
252
  ...
253
 
254
  = How can I donate to the plugin author? =
255
 
256
- If you would like to donate any amount to the plugin author (thank you in advance), you can do it via Paypal at https://goo.gl/vpLrSV
257
 
258
  ...
259
 
80
 
81
  == Frequently Asked Questions ==
82
 
83
+ = Why is Sucuri saying that there is a "potential" backdoor, or malware on the Server Info page ? =
84
+ It’s a false positive, and “potential” doesn’t mean it is. The serverinfo.php page, is what you see when you click on the Server Info tab. That page exists for you to be able to diagnose what your server is running, so it’s basically an information page that fetches technical information from the server and shows it there. Furthermore, the plugins are manually reviewed by the WordPress Team, before going live, precisely to avoid that kind of malware situation. Kindly refer to this topic, for a more indepth explanation: https://wordpress.org/support/topic/malware-alert-3/
85
+
86
+ ...
87
+
88
  = How can I exclude certain assets by wildcard? =
89
 
90
+ Each line on the ignore list will try to match a substring against all CSS or JS files, for example `//yoursite.com/wp-content/plugins/some-plugin/js/` will ignore all files inside that directory. You can also shorten the URL like `/some-plugin/js/` and then it will match any css or js URL that has `/some-plugin/js/` on the path. Obviously, doing `/js/` would match any files inside any "/js/" directory and in any location, so to avoid unexpected situations please always use the longest, most specific path you can use.
91
 
92
  ...
93
 
98
  ...
99
 
100
 
101
+ = Why are there several or lots of JS and CSS files listed on the status page, or why the cache directory takes so much space? =
102
 
103
  Well, some sites and themes have a combined CSS size above 1+ MB, so when you have 200 files, that's 200+ MB.
104
+ Different pages may need different JS and CSS files per page, post, category, tag, homepage or even custom post types, but if the requirements never change and you always load the exact same files on every page, you will not see as many files. Likewise, if you have some dynamic URL for CSS or JS that always changes in each page view (the query var for example), you must add it to the ignore list (else it will generate a new cache file every page view).
105
 
106
  ...
107
 
113
 
114
  = Is it compatible with other caching plugins? =
115
 
116
+ You must disable any features on your theme or cache plugins, which perform minification of css, html and js.
117
+ The plugin will try to automatically purge several popular cache plugins, however we still recommend you to purge all caches (on whatever you use) if you also manually purge the cache on the plugin settings for some reason.
118
  The automatic purge is active for the following plugins and hosting: W3 Total Cache, WP Supercache, WP Rocket, Wp Fastest Cache, Cachify, Comet Cache, Zen Cache, LiteSpeed Cache, SG Optimizer, Godaddy Managed WordPress Hosting and WP Engine
119
 
120
  ...
121
 
122
  = Is it resource intensive, or will it use too much CPU on my shared hosting plan? =
123
 
124
+ No, it's not. On the first run, each single file is minified into an intermediate cache. When a new group of files is found, it reuses those files and merges them into a new static cache file. All pages that request the same group of CSS or JS files will also make use of that file.
125
 
126
  ...
127
 
131
 
132
  ...
133
 
134
+ = Is it compatible with AdSense and other ad networks? =
135
 
136
+ The plugin is compatible with any add network but also depends on how you are loading the ads into the site. We only merge and minify css and JavaScript files enqueued in the header and footer that match your own domain name... which would exclude any external ads. If you're using a plugin that uses JS to insert the ads on the page, there could be issues. Please report on the support forum if you found such case.
137
 
138
  ...
139
 
140
  = After installing, why did my site feels slow to load? =
141
 
142
+ The cache regeneration happens once per URL or if the included CSS + JS files change. If you need the same set of CSS and JS files in every page, the cache file will only be generated once and reused for all other pages, however if you have a CSS or JS that is generated dynamically and uses a time based query string, (url changes on every page view), you must add it to the ignore list by wildcard.
143
 
144
  ...
145
 
146
+ = How do I use the pre-compressed files with gzip_static on Nginx? =
147
 
148
  When we merge and minify the css and js files, we also create a `.gz` file to be used with `gzip_static` on Nginx. You need to enable this feature on your Nginx configuration file if you want to make use of it.
149
 
150
  ...
151
 
152
+ = Where is the YUI Compressor option gone? =
153
 
154
+ This functionality depends on whether you have exec and java available on your system and PHP can detect it or not. It will be visible on the basic Settings page under the JavaScript Options section and it is available for JS files only.
155
 
156
  ...
157
 
158
  = After installing, why are some images and sliders not working? =
159
 
160
+ a) You cannot do double minification, as it will break things, so make sure you have disabled any features on your theme or other plugins, which perform minification of css, html and js files.
161
 
162
  b) Are you trying to use the defer JS or CSS options, without understanding exactly how it works? Be advised that most themes do not work properly with those options on.
163
 
164
+ c) The plugin relies on PHP Minify to minify JavaScript and css files, however it is not a perfect library and there are plugins that are already minified and do not output a min.js or min.css name and end up being minified again. Try to disable minification on JS and CSS files and purge the cache.
165
 
166
+ d) Sometimes a plugin conflicts with another when merged. Try to disable CSS processing first and see if it works. Try to disable JS processing second and see if it works. Try to disable HTML minification last and see if it works. If one of those work, you know there is a conflict.
167
 
168
+ e) If you have a conflict, try to add each CSS and each JS to the ignore list, one by one until you find the one that causes the conflict. If you have no idea of which files to add, check the log file on the status page for a list of files.
169
 
170
  ...
171
 
172
+ = Why are some of the CSS and JS files not being merged? =
173
 
174
  The plugin only processes (same domain) JS and CSS files enqueued using the official method outlined here: https://developer.wordpress.org/themes/basics/including-css-javascript/
175
 
176
+ Some developers enqueue all files properly but might still "print" conditional tags directly in the header, while they should be following the example as explained on the codex: https://developer.wordpress.org/reference/functions/wp_script_add_data/
177
 
178
  Because "printing CSS and JS tags on the header and footer is evil" (seriously), we cannot capture those files and merge them together.
179
 
180
+ There are also specific ways to enqueue files meant to be loaded for IE users only, mobile users, desktop users, printers, etc., else those may be merged together and break things. There is a blacklist and default ignore list on the PRO tab because of this.
181
 
182
  ...
183
 
184
+ = How can I load CSS async, get the critical path or why is there a flash of unstyled content when I enable this? =
185
 
186
  This is an advanced option for highly skilled developers. Do not try to fiddle with these settings if you are not one, as it will almost certainly break your site layout and functionality.
187
 
191
 
192
  = How to undo all changes done by the plugin? =
193
 
194
+ The plugin itself does not do any "changes" to your site and all original files are untouched. It intercepts the enqueued CSS and JS files, processes and hides them, while enqueuing the newly optimized cached version of those files. As with any plugin, simply disable or uninstall the plugin, purge all caches you may have in use (plugins, server, cloudflare, etc.) and the site will go back to what it was before installing it. The plugin does not delete anything from the database or modify any of your files.
195
 
196
  ...
197
 
198
  = Why is it that even though I have disabled or deleted the plugin, the design is still broken? =
199
 
200
+ Some "cheap" or so called "optimized" hosting providers, implement a misconfigured and aggressive cache on their servers, and then are "smart" enough to ignore your multiple cache purge requests if those are too frequent.
201
 
202
+ Some providers use a "deploy system", where you upload / replace / delete the files via sftp, but those are not reflected on the live site immediately. This means that in some cases, you can delete your whole WordPress installation via sftp, and the site still works perfectly fine even after purging the cache.
203
 
204
  You may have deleted the physical files from the disk, but that's either just some random storage they gave you and that they sync to the main server every few hours, or it may be the actual live server but with a file cache layer on top of it (so the old code keeps running even though you have deleted the files).
205
 
206
+ The only solution is to contact your hosting company and ask them why you have deleted the plugin and purged your cache, but the live site does not reflect the changes.
207
 
208
  Providers well known to have this issue are hostgator and iPage (please report others if you find them).
209
 
210
  ...
211
 
212
+ = Why is my Visual Composer or Page Editor not working? =
213
 
214
+ Some plugins and themes need to edit the layout and styles on the frontend. When they need to do that, they enqueue several extra js and css files that are caught by this plugin and are merged, when in fact those need to load separately. If you encounter such issue of your page editor not working on the frontend, kindly enable the "Fix Page Editors" and purge your caches.
215
 
216
+ This option hides all optimization from logged in users, so it is as if the plugin has been disabled. Not logged in users and search engines, still see the optimized version.
217
 
218
  ...
219
 
223
 
224
  While this may not work when the images are large, you can use the "Preload Images" for the first relevant images that load above the fold, such as the logo or the first image of a slider. Please note however, this is for images that show up in all pages, not just the homepage.
225
 
226
+ Do not put too many images here as those are downloaded in high priority and it will slow down the rest of the page load.
227
 
228
  ...
229
 
241
 
242
  The plugins directory is an open source, free service where developers and programmers contribute (on their free time) with plugins that can be downloaded and installed by anyone "at their own risk" and are all released under the GPL license.
243
 
244
+ While all plugins have to be approved and reviewed by the WordPress team before being published (for dangerous code, spam, etc.) this does not change the license or add any warranty. All plugins are provided as they are, free of charge and should be used at your own risk (so you should make backups before installing any plugin or performing updates) and it is your sole responsibility if you break your site after installing a plugin from the plugins directory.
245
 
246
+ Support is provided by plugin authors on their free time and without warranty of a reply, so you can experience different levels of support level from plugin to plugin. As the author of this plugin I strive to provide support on a daily basis and I can take a look and help you with some issues related with my plugin, but please note that this is done out of my goodwill and in no way I have any legal or moral obligation for doing this. I am also available for hiring if you need custom-made speed optimizations (check my profile links).
247
 
248
  For a full version of the license, please read: https://wordpress.org/about/gpl/
249
 
251
 
252
  = Where can I get support or report bugs? =
253
 
254
+ You can get support on the official WordPress plugin page at https://wordpress.org/support/plugin/fast-velocity-minify
255
+ You can also see my profile and check my links if you wish to hire me for custom speed optimization on WordPress or extra features.
256
 
257
  ...
258
 
259
  = How can I donate to the plugin author? =
260
 
261
+ If you would like to donate any amount to the plugin author (thank you in advance), you can do it via PayPal at https://goo.gl/vpLrSV
262
 
263
  ...
264