=== WP-Optimize – Cache, Compress images, Minify & Clean database to boost page speed & performance ===
Contributors: DavidAnderson, ruhanirabin, DNutbourne, aporter, snightingale, lumberhack, webulous
Donate link: https://david.dw-perspective.org.uk/donate
Tags: cache, caching, image cache, minify, performance cache, page speed, image optimizer, compress images, optimize database, clean database
Requires PHP: 5.6
Requires at least: 4.5
Tested up to: 6.6
Stable tag: 3.6.0
License: GPLv2+
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Get caching and more with this powerful cache plugin. Cache, optimize images, clean your database and minify for maximum performance.

== Description ==

MORE THAN A CACHING PLUGIN

<strong>WP-Optimize is trusted by more than 1 million WordPress website</strong> owners to <strong>boost performance</strong> and <strong>reduce page load times</strong> to improve your site's <strong>user experiences</strong> and <strong>SERP rankings in Google.</strong>

[vimeo https://vimeo.com/333705073]

It does this in four clever ways:

<strong>1. It caches your site</strong>

Caching is the process of storing a temporary HTML version of your site on the server so it can be retrieved more quickly for the user.

It's a sure-fire way to ensure web pages load at lightning-fast speed. Turn it on in just one click.

<strong>2. It compresses images</strong>

Large images can really impact page speed load times. WP-Optimize makes it easy to identify and compress images to your preferred lossy / lossless settings in a couple of clicks.

<strong>3. It cleans the database</strong>

Your WordPress database stores everything that you need, plus some things that you don't. WP-Optimize cleans and optimizes the database to speed up your site and save server resources.

<strong>4. It minifies</strong>

On top of its three main features, WP-Optimize Cache also has the more advanced minification feature.

Together with caching, minification dramatically improves performance and page speed load time.

== 1. CACHE YOUR SITE ==

<strong>Turn on caching in just one click:</strong>

WP-Optimize automatically and optimally configures itself for your WordPress site. Turn it on in one-click or refine its settings if you prefer.

<strong>More cache features:</strong>

* <strong>Cache preloading:</strong> This feature emulates a visit to your site, meaning cached files are served straight away, speeding up your site from the very first visit.

* <strong>GZIP Compression:</strong> When the server isn't configured to do so, WP-Optimize delivers HTML, CSS and JS files  to the user's browser as smaller, compressed files, reducing the size of pages and style sheets by up to 90%!

* <strong>Preload key requests:</strong> Recommended by Google to improve page speed times. Critical resources (things like font files) get loaded first, so the page loads much faster <strong>[Premium]</strong>.

<strong>Use cache settings to:</strong>

* <strong>Serve cached content to logged in users:</strong> Turn this on if content stays the same for logged in users (or turn on and exclude URLs where content does change e.g. my account areas).

* <strong>Exclude content from cache:</strong> Exclude by URL, conditional tags, browser agent strings or list cookies that should prevent caching when set (advanced user settings).

* <strong>Deliver device-specific cache:</strong> Serve separate cache files to desktop and mobile devices . This ensures that responsive features e.g. desktop and mobile menus are cached separately and served correctly.

* <strong>User per role cache:</strong> Useful if your website delivers different content to different user roles. e.g. an e-commerce site that displays different content to resellers or consumers <strong>[Premium]</strong>.

* <strong>User specific cache:</strong> Serves separate cache files to individual users. Useful for websites with personalised content e.g. Learning management systems <strong>[Premium]</strong>.

* <strong>Cache purging permissions:</strong> Select which user roles are allowed to purge the cache e.g. admin only or perhaps a 'teacher' role in an LMS setting only <strong>[Premium]</strong>.

== 2. COMPRESS IMAGES ==

* <strong>Lossy or lossless compression options:</strong> Choose between maximum space saving, best image quality or somewhere in-between.

* <strong>WebP conversion:</strong> Recommended by Google, WebP can achieve up to 34% smaller file sizes compared to JPEG and up to 26% compared to PNG.

* <strong>Auto-compress:</strong> Check a box and every new image you upload will automatically be compressed to your preferred lossy / lossless settings.

* <strong>Bulk compression:</strong> Compress every existing image on your site with the press of a button.

* <strong>Restore original:</strong> Gone too far? Revert images back to their original in one click.

* <strong>Retain EXIF image data:</strong> Check a box to retain EXIF image data during compression.

* <strong>Lazy Load:</strong> Webpages load much faster by loading web parts gradually, when they're needed vs simultaneous loading of everything, all at once <strong>[Premium]</strong>.

* <strong>Delete orphaned images:</strong> Identify and delete unused images from your Wordpress website, saving disk space <strong>[Premium]</strong>.

* <strong>Delete unused image sizes:</strong> WordPress creates multiple sizes for every uploaded image causing the uploads folder to become bloated. Scan for image sizes not in use and remove them to save further disk space <strong>[Premium]</strong>.


== 3. CLEAN AND OPTIMIZE THE DATABASE ==

Cleans-up database tables, post revisions, auto draft posts, trashed posts, spam, trashed comments and more. Choose what to optimize or it's one click to clean out the lot.

* <strong>Schedule clean-ups:</strong> So you can set and forget. Choose from daily, weekly, fortnightly or monthly.

* <strong>Flexible clean-up schedules:</strong> You may wish to optimize database tables more frequently than you remove unapproved comments (for example). Choose the specific time and day when tasks should run <strong>[Premium]</strong>.

* <strong>Retain a set number of weeks' data during clean-ups:</strong> Just in case you need to retrieve something.

* <strong>Back up before clean-ups:</strong> If you delete something you shouldn't, restore it in a couple of clicks with UpdraftPlus.

* <strong>Power tweak - Turbo boost for WooCommerce:</strong>  Unique to WP-Optimize, this power tweak boosts performance by replacing a slow query in WooCommerce with two much more efficient queries. E-commerce sites transacting high numbers of orders stand to gain here <strong>[Premium]</strong>.

* <strong>Power tweak - Boost performance by indexing the postmeta table:</strong> This unique power tweak works by allowing the WordPress postmeta table to be indexed, improving performance <strong>[Premium]</strong>.


== 4. MINIFY AND COMBINE HTML, CSS AND JAVASCRIPT ==

* <strong>Minify in just one click:</strong> Minifies HTML, JavaScript and CSS. Toggle on or off or customise each one under 'settings'.

* <strong>Customise minification:</strong> Minify only (removing unnecessary code e.g line breaks and white spacing) or minify and merge. Apply the same or different settings to HTML, CSS and JavaScript.

* <strong>Asynchronous loading:</strong> Choose non-critical CSS and JavaScript files to load in the background and independently of other resources e.g. analytics or pixel scripts. Loading asynchronously eliminates render blocking and improves page speed.

* <strong>Exclude files from being minified:</strong> Specify CSS and JavaScript files to exclude from minification.

* <strong>Optimize fonts:</strong> Optimize Font Awesome and Google Fonts. Inline the font files, inherit from CSS settings or load CSS / Javascript asynchronously instead.

* <strong>Preload assets:</strong> WP-Optimize visits each web page on your site so the code is minified and preloaded for real life users, right from their very first visit.

* <strong>Preload key requests:</strong> Recommended by Google to improve page speed times. Critical resources (things like font files) get loaded first, so the page loads much faster.


== WHY WP-OPTIMIZE? ==

* It's brought to you by UpdraftPlus, the team behind the world's most trusted backup, migration and restoration plugin.
* It's easy to use.
* It packs a punch for a free plugin.


WP-Optimize brings the best cache and optimization technology together into one single, seamless plugin to make your WordPress site fast, lean and efficient.

== PREMIUM FEATURES AT A GLANCE ==

Our free version of WP-Optimize Cache is great, but we also have an even more powerful Premium version with extra features that offer the ultimate in freedom and flexibility:

* <strong>Multisite Support:</strong> extends database optimisations so they function for multiple WordPress sites at a time. If you manage more than one website, you will need WP-Optimize Cache Premium.
* <strong>Flexibility and Control:</strong> gives you the power to optimize select individual tables or a particular combination of tables on one or more WordPress websites, rather than having to optimize all database tables.
* <strong>Deleting unused and unwanted images:</strong> removes orphaned images from your WordPress site, plus images of a certain, pre-defined size.
* <strong>Sophisticated Scheduling:</strong> offers a wide range of options for scheduling automatic optimization. Specify an exact time and run clean-ups daily, weekly, fortnightly or monthly and perform any number of additional once off optimizations.
* <strong>Seamless Graphical User Interface:</strong> for superb clarity in scheduling and managing of multi-site optimizations.
* <strong>WP-CLI support:</strong> provides a way to manage optimizations from command-line interface if you have lots of sites
* <strong>Lazy Loading:</strong> load only the images and part of a web-page when it is visible to the user so they can see something very quickly.
* <strong>Optimization Preview:</strong> gives users the ability to preview, select and remove data and records available for optimization from the database.
* <strong>Preload key requests:</strong> preload assets such as web fonts and icon fonts, as recommended by Google PageSpeed Insights.
* <strong>Premium support</strong> - caching is one of the most complex things you can do for a website, so premium support offers you peace of mind there's someone to talk quickly to if you need any technical answers or help configuring the optimizations of cache settings for your website.

= Translations =

Translators are welcome to contribute to the plugin. Please use the [WordPress translation website](https://translate.wordpress.org/projects/wp-plugins/wp-optimize).

== Installation ==

There are 3 different ways to install WP-Optimize Cache, as with any other wordpress.org plugin.

= Using the WordPress dashboard =

1. Navigate to the 'Add New' in the plugins dashboard
2. Search for 'WP-Optimize'
3. Click 'Install Now'
4. Activate the plugin on the Plugin dashboard

= Uploading in WordPress Dashboard =

1. Download the latest version of this plugin from https://wordpress.org/plugins/wp-optimize/
2. Navigate to the 'Add New' in the plugins dashboard
3. Navigate to the 'Upload' area
4. Select the zip file (from step 1.) from your computer
5. Click 'Install Now'
6. Activate the plugin in the Plugin dashboard

= Using FTP =

1. Download the latest version of this plugin from https://wordpress.org/plugins/wp-optimize/
2. Unzip the zip file, which will extract the wp-optimize directory to your computer
3. Upload the wp-optimize directory to the /wp-content/plugins/ directory in your web space
4. Activate the plugin in the Plugin dashboard

== Frequently Asked Questions ==

= Isn't it better to use a dedicated caching plugin to cache my site? =

We've built WP-Optimize Cache around the most advanced and powerful caching technology. Our caching tests and feedback from real-world users show that the caching feature alone can make your site faster than any other cache plugin or optimization. <a href="https://ps.w.org/wp-optimize/assets/screenshot-1.png?rev=2125386">See these speed test results.</a>

= Is optimizing my database safe? =
Yes; optimizing does not involve any "tricks" or poking around in dangerous ways. It involves running routine clean-up operations using well-defined, common MySQL commands. <strong>Nevertheless, we always recommend backups</strong>, which cover every possibility; not just database malfunctions, but hackers, human errors, etc. We recommend <a href="https://wordpress.org/plugins/updraftplus/">UpdraftPlus</a>.

= What savings can I expect to make? =
This is a "how long is string?" sort of question. It depends completely on your site - how big it is, how many users interact on it, how long it has been running, and when you last optimised it. However, the savings and speed-ups can be substantial; it is always worth making sure that your database is optimised.

= How do I get support? =
In our support forum, here: https://wordpress.org/support/plugin/wp-optimize/

= How do I use WP-Optimize Database Cleaning? =
[vimeo https://vimeo.com/339511213]

= WP-Optimize does not make large savings on my database =
This is rare; it's probably because you're with a shared web hosting company that doesn't allow scripts to run an optimize command via SQL statements (SQL "OPTIMIZE" instruction). Please consult your web hosting company on this matter.

= Is the plugin tried and tested? =
Yes - WP-Optimize Cache is WordPress's #1 most-installed optimisation plugin, with over 800,000 users and a pedigree going back over 8 years.

= Does WP-Optimize support InnoDB tables? =
WP-Optimize will disable some features if it detects InnoDB tables. Optimization of the database tables on-disk is not available, but other clean up features would work.

= Can you help me restore my database? =
Not unless you have an existing backup. Please ensure that you make a backup of your entire database before using WP-Optimize for the first time, and when you upgrade to a major new version of it. We recommend <a href="https://wordpress.org/plugins/updraftplus/">UpdraftPlus</a>.

= Are there any bugs in this plugin? =
The plugin is an ongoing work; that means that it is impossible to rule out unforeseen situations and bugs. So I would recommend you to test it out on your local system or make a backup of your database (just to be extra careful).

= How do I stop transient options from coming back automatically each time I clear them? =
When WordPress uses a particular transient, that specific transient is re-created automatically. So, it's normally for ones which are in active use to gradually re-appear. The best way to keep things optimal is to clear the transient options on a scheduled basis. For example, WordPress may create 50 transient option in a week. If you schedule WP-Optimize Cache to clear these options on a weekly basis, you'll have far fewer building up.

= The table size shows wrong / Not optimizing  =
Please check your database for corrupted tables. That can happen, usually your web hosting company can run the repair command on the db.

= Which WordPress and PHP versions are supported? =
To use all features in the plugin, a minimum of version WordPress 4 with PHP 5.3 are required. But we do recommend to use the latest version of WordPress. Using PHP 7+ is also highly recommended, as our caching feature will work even faster.

= Which optimisation will make the biggest difference? =
This depends on your setup (theme, number and quality of plugins used, etc...), but generally, caching will make the biggest visible difference to your website's performance. Indeed, the cache functionality bypasses most of WordPress code to serve your pre-optimised cached pages directly to your visitor, significantly increasing the speed.

= What is caching, or page caching? =
<em>"Caching", from Wikipedia:</em> "In computing, a cache is a hardware or software component that stores data so that future requests for that data can be served faster; the data stored in a cache might be the result of an earlier computation or a copy of data stored elsewhere. A cache hit occurs when the requested data can be found in a cache, while a cache miss occurs when it cannot." — WP-Optimize cache does this by saving the page computed by WordPress on the disk. When a user visits a page, WP-Optimize will serve the cached page before WordPress is loaded. If the page wasn't cached before, it will be computed by WordPress, and WP-Optimize will then save the result to the cache.

= Why should I use a caching plugin on my website? =
You think your site is fast without caching? A caching plugin will make your website even faster. A faster cached website will increase SEO, it will improve your visitors experience. Caching will also save your server's resources.

= Is the WP-Optimize page cache compatible with Gutenberg and WordPress 5.0+? =
Yes, your Gutenberg pages will be cached, as well as those created with page builder plugins such as Elementor.

= How do I know my webpage is being cached (or why it isn't)? =
If cache is enabled, and in order to see if your page is cached, use the "View Source" function in your web browser to view the page source. To find caching information, scroll down to the bottom, and you should see a line added by the cache: `<!-- Cached by WP Optimize - https://getwpo.com - Last modified: Sat, 20 Jul 2019 21:17:19 GMT ->`
However, note that if you are using a further service that minifies HTML (e.g. Cloudflare), then this line may have been removed. Another method is to inspect the contents of the directory wpo-cache inside your wp-content directory. <a href="https://getwpo.com/faqs/how-do-i-know-my-webpage-is-being-cached/>Further information can be read here</a>
Also note that if you do not preload the cache, a page or post will have to be visited once for the cache file to be generated.

= How do I configure the page cache? =
Go to WP-Optimize -> Cache and enable caching. For most people, that will be enough. If you run an e-commerce, have a custom login page or any page that has dynamic content, you might want to exclude certain urls from the cache. See <a href="https://getwpo.com/documentation/">Advanced caching options</a> in our cache documentation to know more on excluding an URL from the cache.
[vimeo https://vimeo.com/337247770]

= Is the caching feature compatible with e-commerce plugins? =
Yes, caching with WP-Optimize Cache allows you to safely cache your products, with plugins like WooCommerce or Easy Digital Downloads, or any e-commerce that uses `DONOTCACHEPAGE` to exclude sensitive pages from caching (e.g. my account, cart or checkout pages).

= Is the caching feature compatible with multilingual plugins? =
Yes, WP-Optimize works with popular multilingual plugins like WPML or Polylang. However, it's important to note that when using WP-Optimize with multilingual plugins, the URL format for different languages should not include any query parameters, for example `https://example.com/?lang=en`. Instead, it should be in a pretty permalink format, such as `https://example.com/en`.

= Do I need a special setup to use the caching feature? =
No, if WordPress works properly, WP-Optimize will be able to cache your pages and posts.

= Can I use the page caching feature together with another cache plugin? =
No, because both cache plugins would need to use the drop-in plugin `advanced-cache.php`. If you turn off caching on WP-Optimize Cache, you can use any other caching plugin and still use the other features of WP-Optimize. But we do recommend using our caching solution.

= Is WP-Optimize caching compatible with Cloudflare? =
Yes! No special cache configuration is needed. Page caching on the WP site (that done by WP-Optimize Cache) is independent of proxy caching (e.g. Cloudflare) – you can use both, or neither, and they will complement each other and not interfere. <br>Just one thing to note – Cloudflare will strip out the special HTML comment at the bottom of the source of a page that is helpful to confirm that page caching is working, so, don't be confused by that – it's absence doesn't indicate the cache is not working.

= Can I empty the cache automatically when performing a custom action? =
Yes, you can trigger a cache purge action using WP-Optimize Cache public functions. If you want to clear the whole cache, use the function `wpo_cache_flush()`. If you want to clear the cache files for a specific page or post, use `WPO_Page_Cache::delete_single_post_cache($post_id);`. Those cache options are available after WP action `plugins_loaded`.

= Will the comments work even when page caching is enabled? =
Yes, when using WordPress' commenting system, your users will still be able to post comments. Every time a comment is approved, the cache for that page or post will be cleared, allowing the next visitor to see an up to date list of comments.

= What is "cache preloading"? =
Usually, a page is cached when a user visits it. So the first user visiting won't be served a cached version of the page, and will wait longer than the next users. The cache preloading functionality will go through all your pages and posts, and simulate a visit by a user, allowing WP-Optimize to cache the pages before anyone visits them. Your first visitor will thus be served a cached version of the page, increasing its performance.

= What frequency should I choose for the cache preloading schedule? =
Choosing a frequency for the cache preloading schedule will depend on factors such as the frequency at which the website content is updated, the number of pages in the cache, the resources of the server and more. 
For example a site with hundreds of pages will require more resources to preload its cache. So choosing a high frequency will mean that the cache will be recreated often, and the resource usage will be higher.
On a website where updates aren't as frequent, you can even disable the cache preloading schedule, or set a high cache lifespan and set the cache preloading schedule to follow it.

= How do I cache only the home page? =
Add /.+ to the cache option "URLs to exclude from cache" on the advanced settings tab.

= How do I prevent WP-Optimize Cache from caching a certain page =
To prevent a page from being cached, you can add the URL to the field "URLs to exclude from cache" in the cache "Advanced settings" tab. If you are developing a plugin and want to prevent a page from being cached, you can define the "DONOTCACHEPAGE" constant on the pages you need. Any request where "DONOTCACHEPAGE" is defined will not be cached.

= Is the caching feature of WP-Optimize free? =
Yes the caching feature is free. You will always be able to cache your website for free using WP-Optimize and we are constantly working on improving the existing cache feature. We will add more caching options to the free version and develop more specific caching options in the premium version to enable you to taylor the caching functionality to your needs.

= Where does WP-Optimize Cache store the cached files? =
The cached files are stored in the common "wp-content/cache" folder, inside a "wpo-cache" folder. Removing the "cache" folder will delete all of WP-Optimize's cache, as well as those from other plugins.
Deleting the "cache" folder is generally safe, as those cached files will be regenerated.

= How do I disable caching? =
Go to WP-Optimize settings > Cache and toggle the "Enable page caching" option to on/off.

= Will caching slow down my server? =
No, caching will actually reduce the load on your server, by reducing the amount of PHP and mysql used. You might see a peak in resource usage when using the cache preloader, as this functionality will create the cache files for all your pages in a short amount of time. But once this is done, performance should increase and the load on your server will decrease. Every single major site uses caching to serve cached pages faster by using fewer resources. 

= Can I make certain parts of the page stay dynamic when cache is enabled? =
The cached page is sent to the user before most of WordPress was loaded. The plugins aren't loaded yet, making it impossible for them to change the cached content at every request.
So at the moment if you want to keep parts of your page dynamic (e.g. adverts, widgets, shopping cart...) AND keep it cached, you will have to use custom solutions using javascript and AJAX to fetch those dynamic parts from the server.

= How do I delete the WP_CACHE define from wp-config.php? =
WP-Optimize Cache will remove the "WP_CACHE" constant from wp-config.php when you disable page caching, or when you deactivate the cache plugin. If you need to remove it manually, you can use FTP to edit wp-config.php and delete the line define ('WP_CACHE', true );
If page caching is still enabled in the settings, WP-Optimize Cache will attempt to add the line again, as it is required for the caching functionality to work. 

= My filesystem is not writable to increase security. What do I need to do to make it compatible with the caching functionality? =
WP-Optimize caching feature needs write access to the 'wp-content/cache' folder, as this is where the cache files will be stored. It also needs to define the constant 'WP_CACHE' in 'wp-config.php', it will need access once to 'wp-content/advanced-cache.php', as well as to the folder 'wp-content/wpo-cache' to write the cache settings. 

= How do I change file permissions? =
If you need to change file permissions to enable caching, you can follow the instructions on this page https://wordpress.org/support/article/changing-file-permissions/

= What is the maximum number of pages I can cache? =
There is no limit to the number of pages you can cache. The only limit is the space on your server and the maximum number of subdirectories allowed by your server, as caching will write files in subdirectories following the permalink structure.
If you were to reach a caching limit, it probably means that your server is not fit for the size of your website and caching needs.

= How do I serve cached pages to people using a phone or tablet? =
You can generate a separate cache by selecting "Generate separate files for mobile devices" in the page cache settings. This cache setting is only necessary if you use a specific theme for mobile devices, or for certain AMP plugins.

= Does WP-Optimize Cache work with Nginx? =
Yes, the cache feature works with Nginx. Should you want to enable browser caching or GZIP compression, you will have to do this yourself directly on the server settings.

= Does caching work with Windows Server (IIS) ? =
Yes, the cache feature works with IIS. As with Nginx, if you need to enable browser caching or GZIP compression, you will have to do this yourself on the server.

= Does the WP-Optimize page cache work with non-pretty (query parameter-based) permalinks? =
No. It's necessary to have pretty permalinks of the type http://xxxxx.com/my-post/ rather than http://xxxxx.com/?p=1234 for cache to work. Pretty permalinks are the WordPress default setting, and there is no good reason to turn them off, so you should not have a problem with this.
Note that cache will work with permalinks including /index.php/. It is only those based upon query parameters (?…) where cache won't work.

= When does WP-Optimize clear the page cache? =
* When you publish new content or update/edit existing content, the cache for that post/page will be cleared.
* Changing/updating current themes and parent themes (of child themes) will purge the cache.
* When turning off the cache feature in WP-Optimize

= Will pages in the WP admin dashboard be cached? =
No, WP dashboard pages are not cached. The cache functionality is only meant to cache frontend pages.

= What is cache lifespan? =
The cache lifespan is the time a cached file will be kept before being regenerated.
One of the main reason for setting a lifespan to your cache is that some plugins and themes use nonces, which are printed in the source code of the page (<a href="https://developer.wordpress.org/plugins/security/nonces/">Read more about nonces here</a>). These nonces cannot be reused and are valid for 12 hours by default (developers can change that value). The cache plugin will store the nonce in the page, and this one will become invalid after that perdiod of time, which can affect certain functionalities of your plugins and themes. Setting a cache lifespan to under 10 hours ensures the cache is flushed automatically before the nonce expires. This way you can use WP-Optimize's cache feature on sites which use nonces.
An other reason is that you may want your pages to reflect some changes without having to clear the whole cache. Indeed if you have many pages and posts, you might not want to clear every cache file with every change, but rather set an interval at which they will expire and be regenerated.

= What value should the cache lifespan be? =
A lower cache lifespan value will result in more frequent cache update activity on your server, and thus more preload processes, if activated. 
If your site does not use nonces, and your site's cache doesn't need to be updated often, you can set the cache lifespan to a high value or to 0 to give it an infinite lifespan.
The cache lifespan option is set to 10 hours by default, but you may go down to 8 or even less. 
If you notice any issues due to high server load, set a higher interval for the preloader.

= Can WP-Optimize Cache minify JavaScript, CSS and HTML? =
Yes, the newly added Minify enables you to minify JavaScript and CSS. It also enables you to minify HTML.

= What is "Minify"? =
[vimeo https://vimeo.com/402556749]

= Why minify my WordPress site? =
WP-Optimize Cache's Minify feature is all about increasing the speed of your WordPress site for your users.
One way Minify does this is by reducing the size of your HTML, CSS and JavaScript files by removing unnecessary spaces and lines from the files and shortening long names internally within the code.
Another way is that your files are merged into as few files as possible. This reduces the amount of load on your web server and can be quicker to load fewer files.
You can also defer the loading of any CSS or JavaScript file. This means any large or extraneous CSS or JavaScript file can be loaded independently from the core of your WordPress site; giving your users quicker access to your site.

= What does "Reset the minified files" actually do? =
Pressing the "Reset the minified files" does:
* delete the temporary files used when generating the minified assets
* delete old minified files (more than 30 days old)
* add a folder for the new minified files, which will be generated when visiting a page
The previously minified CSS files will remain on the server until they expire, or until they're deleted using the button "Delete all the files generated by minify".

= Can I defer CSS and JavaScript using WP-Optimize Cache? =
Yes, the newly added minification feature (a.k.a. Minify) allows you to defer parsing of JavaScript and CSS.

= Google's PageSpeed Insights says to leverage the font-display CSS feature to ensure text is user-visible while webfonts are loading. Can WP-Optimize Cache do that? =
Leveraging the font-display CSS feature is currently possible when using Google Fonts. The default parameter is "swap", but can be changed using the WordPress filter "wpo_minify_gfont_display_type".

= When enabling minify, my site's layout is broken. How can I fix it? =
This usually means one or more of your CSS files are incompatible with the minification or merging process. It can also be caused by errors in the CSS's syntax.
You can check the CSS's syntax by using an online CSS syntax checker such as csslint.net.
If your syntax is not causing the issue, or you cannot change the file with an issue, you can either exclude the problematic CSS files from the minification and merging process.
To exclude individual CSS files from the minification and merging process, you can go to WP-Optimize > Minify > CSS and go to the "Exclude the following CSS files from processing" section.

= When enabling minify, some functionality is broken. How can I fix it? =
This usually means one or more of your JavaScript files are incompatible with the minification or merging process. It can also be caused by errors in the JavaScript's syntax.
The first thing to try is to enable the setting "Contain each included file in its own block" in the JavaScript options (WP-Optimize > Minify > Javascript > JavaScript options). This could "catch" an error, and prevent the rest of the code to be broken.
If the first option didn't work, try disabling merging of JavaScript files.
If none of the above works, disable processing of JavaScript files in the minify settings, and <a href="https://wordpress.org/support/plugin/wp-optimize">open a support thread</a> with details about your issue. We'll do our best to help you troubleshoot the issue.

= How do I use the image optimisation feature? =
[vimeo https://vimeo.com/333938451]

== Screenshots ==

1. Cache - plugins comparison benchmark
2. Database optimization
3. UpdraftPlus running a backup before an optimization proceeds
4. Table Report
5. Image compression
6. Main cache screen
7. Settings
8. Real world tests show the cache feature alone can make your site faster than any other caching plugin
9. Features comparison


== Changelog ==

= 3.6.0 - 12/Sep/2024 =

* FEATURE: Premium - Auto-detect images lacking dimension attributes and add them to improve CLS
* FIX: Fixed the issue that disabled WebP conversion due to checking all shell commands for WebP compression
* FIX: Premium - Unused Images - The unused image size deletion functionality does not work when images are not in the /yyyy/mm/ folder
* REFACTOR: Removed unnecessary static methods in WebP class
* TWEAK: Image compression - Rolled back to using popup error notices as in versions prior to 3.4.0
* TWEAK: Added a more descriptive error with resolution proposals for failed gzip compression and browser cache tests
* TWEAK: Fix broken unused image list thumbnails and download as csv link in Multisite
* TWEAK: Fix the singleton pattern in Heartbeat class
* TWEAK: Image compression functionality added to the Media Library page
* TWEAK: Premium - Cache - Added support for Aelia Currency Switcher plugin
* TWEAK: Premium - Unusued images - improve clarity in UI for images in post revisions
* TWEAK: Added additional checks to the `implode()` function to mitigate the risk of fatal errors on certain instances

= 3.5.0 - 14/Aug/2024 =

* FEATURE: Premium - Host Google and minimal analytics scripts locally
* FIX: Premium - Cache - Single page cache purge/preload feature isn't working 
* TWEAK: Add logging for the WebP feature
* TWEAK: Allow minification of script modules
* TWEAK: Cache - Purge the cache when the site is migrated 
* TWEAK: Improvements to asset minification cache logic
* TWEAK: Improvements to reSmushIt curl error message
* TWEAK: Minify - Added an option to disable Google Fonts processing when it causes conflicts with other plugins
* TWEAK: Move all WPO files from the `uploads` folder to `uploads/wpo`
* TWEAK: Style improvement of the loading modals

= 3.4.2 - 03/Jul/2024 =

* FIX: Removes unnecessary heartbeat calls for retrieving information about images

= 3.4.1 - 26/Jun/2024 =

* FIX: Issue with bulk editing on the posts and pages edit screen

= 3.4.0 - 25/Jun/2024 =

* FEATURE: Premium - Smush - Bulk compress / restore from media library
* FIX: Deactivate the form for minifying JS/CSS settings when the corresponding option is disabled
* REFACTOR: The functionality for the 'Unused Images' feature in ACF has been moved to a separate class
* TWEAK: Add UpdraftCentral commands for the latest WP-Optimize features
* TWEAK: Adjusted the scheduled preload time for improved performance
* TWEAK: Auto-update advanced-cache.php settings during site migration
* TWEAK: Cache - Human-readable file names for the cache directory
* TWEAK: Caching related cron jobs are activated even though cache is disabled
* TWEAK: Image compression - Updated message for restoring images action
* TWEAK: Implement Heartbeat API for image compression progress updates
* TWEAK: Improving vendor autoload
* TWEAK: Introduces a hook (`wpo_force_webp_serve_using_altered_html`) for changing WebP serving method
* TWEAK: Minify - Exclude .min files from minification
* TWEAK: Minify - Improve list of processed files UI
* TWEAK: Optimization of the get_uncompressed_image query
* TWEAK: Persist script loading strategy when minifying JS files
* TWEAK: Premium - Compatibility with Curcy WooCommerce multi currency plugin
* TWEAK: Premium - Unused Images - Added an option to delete original images when scaled versions exist

= 3.3.2 - 16/Apr/2024 =

* FIX: Ensure the admin bar is not cached when caching is enabled for both logged-in and guest users
* REFACTOR: Remove unused code
* TWEAK: Cache - Prevent sitemaps being cached
* TWEAK: Display a notice when static browser cache is enabled but not working
* TWEAK: Premium - Added "Lost your password?" link on plugin's page
* TWEAK: Premium - Unused images - Detect Elementor's 'Video' widget's image
* TWEAK: Recognise Rank Math plugin tables as used in database optimization
* TWEAK: Reduce .htaccess file write operations when WebP is enabled
* TWEAK: Seasonal notice content update for 2024 
* TWEAK: Unused Images - Unused tab displays multiple images for compressed images with WebP Conversion
* TWEAK: Prevent multiple AJAX requests being generated by repeated clicks on the "Purge Cache" button
* TWEAK: Call the `litespeed_finish_request()` function when attempting to close browser connection on LiteSpeed servers

= 3.3.1 - 06/Mar/2024 =

* FIX: Cache - Compatibility issue with Jetpack's infinity scroll feature
* FIX: Cache - Don't cache activity stream (ActivityPub plugin compatibility)
* FIX: Cache - Page not cached comment is added to `robots.txt`
* TWEAK: Fix PHP warnings when server variables are not available
* TWEAK: Fix Unexpected response alert and PHP warning when cache preloading is triggered manually
* TWEAK: Migrate from setInterval to WP heartbeat API to refresh information about backend tasks
* TWEAK: Optimization of the WebP Implementation
* TWEAK: Update dashboard notice to include all of our plugins
* TWEAK: Update the footer review prompt

= 3.3.0 - 31/Jan/2024 =

* FEATURE: Premium - Ability to preload and purge caches from individual post/page
* FIX: Premium - Unused Images - Recognise Elementor's Container, and Section widget background images
* FIX: Avoid having repeated minified scripts in the same bundle, it breaks the code in some specific cases
* FIX: Cache - TranslatePress compatibility - Post updates purges cache for all related translated languages
* FIX: Only try to parse canonical URLs if there is a path or querystring, needed for WPML with multi-domain compatibility
* TWEAK: Add cron de-scheduling of all wpo_* events during plugin uninstall
* TWEAK: Cache - Always add source code comment about page not being cached, but only add details when WP_DEBUG is ON
* TWEAK: Cache - Fix issue with excluding encoded (non-latin) URLs
* TWEAK: Do not attempt to close browser connection when the context is not an AJAX action
* TWEAK: Minify - Logging more information about why minify static assets cache gets invalidated and regenerated
* TWEAK: Revert to the original `matthiasmullie/minify` repository after confirming resolution of previous issues
* TWEAK: Setup Cron job to clear failed smush tasks from DB
* TWEAK: Using clear text user agent strings instead of regular expressions to identify web browsers for improved clarity
* TWEAK: Updater library in the Premium version updated to the current release series

= 3.2.22 - 23/Nov/2023 =

* TWEAK: Cache - Show a notice in the admin if the config file is missing and caching is enabled
* TWEAK: Added support for new emoji styles related hooks introduced in WordPress 6.4
* TWEAK: Database - Fix "Optimize database tables" stuck loading state
* TWEAK: Premium - Cache - Style improvement for the select2 box from advanced cache settings
* TWEAK: Premium - Images - Fix issues with avif images in the unused images feature
* REFACTOR: Wrapping most of the external links in the WPO settings pages with the appropriate function
* REFACTOR: Remove unused code

= 3.2.21 - 18/Oct/2023 =
* FIX: Prevent PHP fatal error when updating from older versions of WP-Optimize

= 3.2.20 - 16/Oct/2023 =

* FIX: WebP - Performance issue because of possible infinite loop
* FIX: Cache purging occurred prior to the cache lifespan expiration
* FIX: Premium - Smush - Do not consider images in trashed posts as unused
* TWEAK - Remove extra slash from plugin asset urls and paths
* TWEAK: Image - Add a tooltip next to the restore button on the edit media screen
* TWEAK: Premium - Prevent PHP deprecated warning when generating variations from attributes for new WooCommerce variable products
* TWEAK: Premium - Purge cache when the `Variation Swatches for WooCommerce` plugin settings get updated
* TWEAK: Premium - Settings - Style improvement for the `Purge cache permissions` select2 box
* TWEAK: Recognise LearnDash plugin tables in database optimization
* TWEAK: Remove empty `uploads/.htaccess` file and remaining cron events
* TWEAK: Smush - Disable server info in smush logs by default
* TWEAK: Smush - Resolve double log entries when compressing a single image from the media library metabox
* TWEAK: Prevent unwanted PHP notice upon update

= 3.2.19 - 15/Sep/2023 =

* FIX: Cache - Relevant caches are now purged upon updating homepage display settings and posts per page settings
* FIX: Minify - Multiline content inside textareas break after exporting and importing settings
* FIX: Smush - Images are not compressed with default (image quality = 100) settings
* FIX: Premium - Cache - Caching stops working when WordPress salt keys contain backslash (\) character
* FIX: Premium - User per role cache not working when tables do not have `wp` prefix
* FIX: Premium - When lazy loading is enabled, the picture tag in initial viewport is not visible
* TWEAK: Fixed date format and timezone in the cache last modification comment according to the site configuration
* TWEAK: Fixed spelling errors in the repository 
* TWEAK: Minify - The process of purging cache for 3rd party caching solutions now works properly when multiple other solutions are present
* TWEAK: Premium - Lazy load - Added Jetpack, Optimole, Rocket Lazy Load, and Smush (WPMU Dev) plugins to the incompatibility notice
* TWEAK: Prevent PHP warning upon installing themes from the WordPress repository
* TWEAK: Update the composer package yahnis-elsts/plugin-update-checker for PHP 8.2 compatibility

= 3.2.18 - 11/Aug/2023 =

* FIX: A bug in the v3.2.17 release that caused certain database optimization buttons to be disabled has been fixed
* TWEAK: Reset WebP serving method upon updating to version 3.2.18

= 3.2.17 - 08/Aug/2023 =

* FIX: Automatically compress newly-added images feature now works on multisite in case of attachment ID is the same in both sites
* FIX: Minify - No separate try-catch blocks for same handle
* FIX: Premium - Unused Images - Recognise Elementor Carousel, Slides, Flip Box, and Site logo widget images
* FIX: Premium - Prevent memory exhausted PHP fatal error when using unused images feature with Elementor
* TWEAK: External links will open in new tab/window
* TWEAK: Remove `htaccess-capability-tester` dependency
* TWEAK: Remove residue folders in `uploads/wpo`

= 3.2.16 - 06/Jul/2023 =

* FIX: HTML minify should not remove `title` tag added by AIOSEO
* FIX: Premium - Fetching unused images data is incorrect when previous task queue is not properly unlocked
* FIX: Premium - Unused Images - Recognise Elementor background images
* TWEAK: Premium - Prevent conflicts between the minify feature and the `YITH Point of Sale for WooCommerce` plugin
* TWEAK: Premium - Compatibility issue with Smart Slider 3
* TWEAK: Suppress PHP warnings caused by WebP converter
* TWEAK: Database optimization - Prevent duplicate AJAX requests, minor code improvements
* TWEAK: Smush - Add a cron job to run pending image compressions, ensuring completion of the process even if bulk image compression encounters interruptions or failures
* TWEAK: Clean up files on uninstall
* TWEAK: Added compatibility for `Custom Permalinks` plugin
* TWEAK: If minifying is enabled, then check that the purge cron event exists (not only upon plugin activation)
* REFACTOR: Premium - Unused Images - Separate classes for Beaver Builder, Estatik, and Yoast SEO plugins
* FIX: Premium - WP CLI commands permission issues solved

= 3.2.15 - 09/May/2023 =

* FEATURE: Premium - Cache - Added compatibility with the "WooCommerce Multilingual & Multicurrency" plugin's multi-currency feature
* FIX: Premium - Above the folder elements should not be loaded lazily
* FIX: Prevents minify cache invalidation when asset version is changed but content is same
* FIX: Prevent PHP 8 uncaught exception `TypeError` when using CloudFlare
* FIX: Add logging destination UI
* FIX: Premium - Cache - Prevents a PHP fatal error that occurs when user cache is enabled on sites running on MariaDB with a version prefix of '5.5.5-' and PHP versions prior to 8.0
* FIX: Serving WebP images only to supported browsers wasn't working properly when page caching is enabled
* FIX: Minify - `inherit` Google fonts method is not working
* TWEAK: Prevent PHP deprecation notice when purging minify cache
* TWEAK: Cache - Prevent PHP warning when deleting cache
* TWEAK: Suppress PHP notice when cannot write to .htaccess file
* TWEAK: Add user capability check for smush task manager ajax handling method
* TWEAK: Minify - Do not send cache control and last modified headers if already present
* TWEAK: Smush - clean up log entries
* TWEAK: Correctly handle XX and T1 country codes in Cloudflare's IP country header
* REFACTOR: Separate classes for activation, deactivation and uninstall actions

= 3.2.14 - 30/Mar/2023 =

* FIX: Compatibility with WordPress 6.2 when using PHP 8.x
* FIX: Divi builder's edit mode when WebP serving is using the "alter HTML" method
* FIX: Premium - Unused images feature - improve compatibility with Beaver Builder and its addons
* FIX: Cache - Page caching wasn't working on the IIS webserver
* TWEAK: Update seasonal notices
* TWEAK: Prevent deprecation notices in PHP 8.2+

= 3.2.13 - 13/Mar/2023 =

* FEATURE: WebP - Ability to convert to webp format from media library
* FIX: Prevent PHP warning when minify-log files are missing or corrupted, also added appropriate error message
* FIX: Delete webp files and uncompressed file when media is deleted
* FIX: Polylang compatibility - now upon updating any post, caches for all translated languages are cleared
* FIX: Prevent adding unsupported media types to the smush task list
* FIX: WebP - Unsupported formats throws a fatal error
* FIX: Compress image UI for webp images
* FIX: Premium - WebP Images are marked as unused images
* FIX: Resolved an issue where Beaver Builder's edit mode was not functioning properly when WebP conversion was enabled
* FIX: Prevent creating multiple cache directories for URLs that contain non-English characters
* TWEAK: Preload allowed time difference is set to be the same as max execution time
* TWEAK: Premium - Unused images feature - Add compatibility with Yoast SEO social images
* TWEAK: Prevent jQuery deprecation notices
* SECURITY: Fixed a non-persistent XSS vulnerability that could occur on certain servers when the WebP conversion option was enabled. This vulnerability could allow an attacker to execute arbitrary JavaScript code in the victim's browser by tricking them into clicking on a specially crafted link. Thanks to Paolo Elia for reporting this.

= 3.2.12 - 06/Feb/2023 =

* SECURITY: Today's 3.2.11 release (free version only - there was no 3.2.11 Premium release) checked nonces incorrectly, opening up the possibility of an attacker tricking an admin into clicking links crafted to perform unauthorised actions on the WP Optimize configuration on his site.

= 3.2.11 - 06/Feb/2023 =

* FIX: Empty query string updates cache
* FIX: Cache - Purge cache after string translation update in WPML
* FIX: Cache - Preload stuck and fails to complete
* FIX: Prevent PHP warning when `.htaccess` files don't have write permission
* FIX: Premium – Fixed compatibility issue with WP Hide plugin
* FIX: Minify - Less than 20KB stylesheets loading order
* TWEAK: Add cron event only if clear backup images is enabled
* TWEAK: Cache - Use WordPress GMT offset for cache comment
* TWEAK: Only allow image types that can be compressed
* TWEAK: Cached page is not served for sites that have own directory for WordPress files

= 3.2.10 - 28/Nov/2022 =

* FIX: Prevent php warning and increase SendInBlue `mailin` plugin compatibility
* FIX: Avoid screen juggling while selecting optimizations from dropdown in scheduled clean up
* FIX: Prevent cache purge upon deactivation using filter
* FIX: Cache purge ability of all registered user
* FIX: Recognise WooCommerce product category images as used images
* FIX: Multisite support in `cached-file-log.php` template
* TWEAK: Improve Optimization Schedule UI
* TWEAK: Consolidated error notices by the use of a global WPO notice object.
* TWEAK: Remove `Reset WebP serving method` button when there are no webp conversion tools
* TWEAK: Remove query strings from scripts
* TWEAK: Add `Restrict Content Pro` plugin slug to `plugin.json`
* TWEAK: Add option to remove orphaned `user meta` data upon run optimization
* TWEAK: Add `no-cache` headers when minify is enabled and page caching is not
* TWEAK: Ability to remove `.htaccess` rules when gzip compression is not available
* TWEAK: WebP: Avoid PHP warnings when using hot linked images (Alter HTML method)
* TWEAK: WebP conversion is unavailable when php shell functions do not exist
* TWEAK: Improved UI settings for asynchronous loading and page speed testing exclusion tools
* TWEAK: Add a constant to enable/disable webp feature
* TWEAK: Set a global context for $wp_file_descriptions context so that it gets assigned to correctly, preventing a subtle visual change in the theme editor
* TWEAK: Prevent php warning from `webp-convert` library
* TWEAK: Update currently-active installs number in thank you for installing notice.
* TWEAK: Replaced deprecated use of jQuery.change()

= 3.2.9 - 06/Sep/2022 =

* FEATURE: Import and export settings
* FIX: Avoid infinite loop while using unused images export csv
* FIX: Scheduled cache preloading issue
* FIX: WebP testing making unnecessary background HTTP checks
* FIX: Google fonts compatibility with The7 theme
* FIX: Prevent console error for undefined `wp_optimize` for smush scripts
* TWEAK: Avoid PHP warnings on cache cleanup
* FIX: Ability to disable webp serving while caching is on
* TWEAK: Reset webp conversion method flags daily using cron job
* TWEAK: Remove orphaned `wpo_weekly_cron_tasks` cron job upon uninstallation

= 3.2.8 - 23/Aug/2022 =

* FIX: Build system error led to a missing file in 3.2.7 which could cause an error when using related functions
* FIX: Fix incorrect function name in admin class

= 3.2.7 - 15/Aug/2022 =

* FEATURE: A CLI command for generating lists of unused images as a CSV file (Premium)
* FIX: The unused images CSV downloads have a few redundant images listed
* FIX: ACF block field images are listed as unused images
* FIX: Correctly recognize `inherit` in google fonts async loading
* FIX: Cache - Do not purge when `wp_update_nav_menu` is removed from `wpo_purge_cache_hooks` array
* TWEAK: Prevent PHP warnings when using `json_decode` result
* TWEAK: Create cache config file if not present because of site migration
* TWEAK: Update notice class
* TWEAK: Recognize WooCommerce scheduled sales and cache accordingly
* TWEAK: Prevent duplicate `wp-optimize` entry in tables optimization list
* TWEAK: Test htaccess capability only when needed by webp feature
* TWEAK: Increase compatibility with Aelia plugins

= 3.2.6 - 15/Jun/2022 =

* FIX: Incorrect static method calling causes parse Error in PHP 5.6.36
* FIX: WebP - Trailing slash file creation issue in PHP 8 
* FIX: PHP warning in cache rules file
* FIX: Asynchronous google fonts loaded twice
* TWEAK: Conditional Tags anchor tag fix

= 3.2.5 - 03/Jun/2022 =

* FIX: Fix a fatal error that could occur in 3.2.4 if settings had not been saved

= 3.2.4 - 24/May/2022 =

* FEATURE: Create a cron job to delete expired cache files
* FEATURE: WebP image format can be used to serve images
* FIX: Incorrect record count after importing
* FIX: Image smushing issues
* FIX: Problem with Redirect – Trailing Slash on URLs
* FIX: Unused images issue with ACF `repeater` and nested fields
* TWEAK: Added functionality for exclude caching based on conditional tags
* TWEAK: Update last optimized time for scheduled optimizations
* TWEAK: Cache - Prevent already header sent warnings while importing posts
* TWEAK: Improved UI for `actionscheduler_` tables
* TWEAK: Add filter to allow/disallow `gz` file generation
* TWEAK: Show error message to user when WP_CACHE constant can't be removed from wp-config.php due to file permission issue.

= 3.2.3 - 09/Mar/2022 =

* FEATURE: Minify: Pre-generate assets
* FIX: Cache - 'Purge cache permissions' setting does not allow additional roles to access the purge cache tool
* TWEAK: Make smush details button work in media modal window
* TWEAK: Do not show overhead in red when the amount is small
* TWEAK: Avoid PHP Notices caused by "upgrader_process_complete" action
* TWEAK: Force monolog 2.3.* in order to avoid PHP 7.2+ dependency

= 3.2.2 - 24/Jan/2022 =

* FEATURE: Cache - Allow debugging of which cache file is chosen
* FEATURE: Premium - Cache - Serve cached content for logged in users, per role
* FIX: Premium - Unused Images - Fixed trashed images listing
* FIX: Image selection issue in compressed and unused image is fixed.
* FIX: ACF plugin compatibility issue with select2 JS library
* FIX: Premium - Unused Images - Multibyte characters in filename are not recognised correctly
* FIX: Table optimization displays wrong information about WP All Import plugin tables
* FIX: Potential PHP fatal error - Call to undefined function _wp_get_current_user()
* FIX: Minify - correctly minify multiple `calc` function in single property value
* FIX: SQL error when keeping post revisions and optimizing
* FIX: Cache - Prevent caching WordPress critical error page
* FIX: Minify - Google fonts merging issue when the same font is enqueued in both API V1 and V2
* FIX: Minify - Make `inherit` and `inline` settings work with Google fonts
* FIX: Database error upon plugin activation
* TWEAK: Minify - Show a notice if other minification plugins are installed and active
* TWEAK: Remove unused bundled JavaScript from minify library to avoid irrelevant scan results
* TWEAK: Image compression - Image compression stats include gains on image sizes
* TWEAK: Make sure that messages from WP_Error objects in gzip compression are displayed to users.
* TWEAK: Prevent PHP notice from WooCommerce deprecation
* TWEAK: Create `task` tables upon activation, if needed.
* TWEAK: Show error instead of success when table doesn't exist
* TWEAK: Update seasonal notices
* TWEAK: Prevent PHP fatal error in media list view, when images are makred as compressed
* TWEAK: Image edit window - Link does not go to image settings and more/less link not working

= 3.2.1 - 29/Nov/2021 =

* FIX: Apply different image compression levels
* FIX: Cache - Purge WooCommerce product page after stock update
* FIX: Database errors after adding a new site
* FIX: Flatsome theme compatibility with google fonts
* FIX: Image compression advanced settings, display default backup days instead of empty value.
* FIX: Image compression was not working when the image extension used capital letters
* FIX: Premium - Cache - Potential PHP error in User-specific cache
* FIX: Premium - resolve potential admin-area PHP error if the deprecated mailchimp sync plugin and MC4WP plugin are both active (and potentially other situations where a plugin deactivates another)
* FIX: Premium - Unused images - compatibility with PHP 8
* FIX: Premium - Unused images - issue with parenthesis in name
* FIX: Premium - Unused images - Pagination count doesn't update
* FIX: Prevent a PHP notice when using with UpdraftCentral
* FIX: Save prioritize maximum compression setting correctly
* FIX: Wrong redirect when wiping settings on multisite
* TWEAK: Premium - add review link at bottom of settings
* TWEAK: Force monolog/monolog and psr/log versions to retain PHP 5.X compatibility/satisfy wordpress.org SVN hooks
* TWEAK: Add compatibility with Kinsta
* TWEAK: Added functionality for to convert MyISAM to InnoDB
* TWEAK: Add filters for minify input string
* TWEAK: Cache - Added filter to modify cache exception urls
* TWEAK: Cache - Optimize preload from sitemap
* TWEAK: Cache - Serve different versions based on cookie consent
* TWEAK: changed filter to prevent deprecation notice in php 8.1+
* TWEAK: Decide automatically whether to inline css or not based on file size
* TWEAK: Fix typo in text domain name
* TWEAK: get_hurl function minified.
* TWEAK: Improve clarity of debug message when DONOTCACHEPAGE constant is used
* TWEAK: Improve DB UI/UX on multisite
* TWEAK: Improve minify cache size messages
* TWEAK: Making Estatik plugin compatible
* TWEAK: Minify - Add JS translations support
* TWEAK: Minify HTML only on cache pre-loading
* TWEAK: Port from previous semaphore classes to Updraft_Semaphore_3_0
* TWEAK: Premium - Unused images - Show that there are images in the trash without having to re-scan everything
* TWEAK: Prevent a PHP notice when downloading image compression log file. Fix backup modal styling issue.
* TWEAK: Prevent fatal error in gzip settings when stylesheet could not be fetched
* TWEAK: Short-circuit trivial case of nothing in the buffer when page-caching, to involve any possible other issues
* TWEAK: Update comments count after trackbacks and pingbacks deletion
* TWEAK: Update minified asset when the enqueued scripts and styles version change
* TWEAK: Use proper constant of includes path in user cache extension
* TWEAK: Fix path to `wpo-plugins-tables-list.json` in robots.txt

= 3.1.12 - 12/Jul/2021 =

* FEATURE: Ability to defer js files and asynchronously load css files
* FEATURE: Option to not aggregate inline styles and scripts
* FIX: Always purge this cache HTML issue
* FIX: Cache - Enable cache for subfolders and multisite installation with the permalink structure example.com/index.php/a-post-name
* FIX: PHP 8 Issue: Minify and Merge Error
* FIX: Silent failure of page caching if plugin location not found
* TWEAK: Added Update URI header field to avoid accidentally being overwritten with an update of a plugin of a similar name from the WordPress.org Plugin Directory.
* TWEAK: Delay displaying notices for 2 weeks
* TWEAK: Improve label of when saving a media type in always purge this
* TWEAK: Improve query for EWWW IO history
* TWEAK: Prevent a PHP notice if using WP-Optimize and MetaSlider on the same site.
* TWEAK: Prevent PHP warnings from theme update and google font minify
* TWEAK: Skip HTML minification if the total size is > 1MB (takes too long to be worthwhile)
* TWEAK: Updating custom compression slider values

= 3.1.11 - 08/Jun/2021 =

* FIX: Cache - Don't cache pages for logged-in users when 'Serve cached pages to logged in users' option (new in 3.1.10) is enabled

= 3.1.10 - 26/May/2021 =

* FEATURE: Premium - Cache - User-specific cache. Useful for subscription websites, and websites where tailored content is offered to logged-in users.
* FEATURE: Page cache now also caches RSS feeds
* FEATURE: Ability to exclude files from minify process
* TWEAK: Prevent PHP warning when deactivating Minify and the cache folder does not exist anymore
* TWEAK: Premium - Lazy-load - Possibility to disable Lazy load on specific pages
* TWEAK: Do not enqueue deleted script
* FIX: Minify - Some pattern CSS import statements broke site
* FIX: Minify - Events triggering
* FIX: Google Fonts regression in 3.1.9

= 3.1.9 - 29/Apr/2021 =

* FEATURE: Power Tweak - Change meta_key field length and create new index
* FEATURE: Premium - Automatic Backups using UpdraftPlus during scheduled optimizations
* FEATURE: Keep last X revisions
* FIX: Overlapping header notice in mobile view
* FIX: Cache - Wildcard not working in cache exclusions 
* FIX: Prevent error in htaccess when mod_header isn't available
* FIX: PHP Fatal error on deleting plugin
* FIX: PHP 8 Issue: loadAsync JS error
* FIX: RankMath breaks robots.txt
* TWEAK: Bypass minify when editing translations using TranslatePress
* TWEAK: Purge minify cache from front end
* TWEAK: Minify - Prevent cache directory creation while disabled
* TWEAK: Add Google Fonts API version 2 support
* TWEAK: Minify - Save all tab content settings changes with single Click
* TWEAK: Improved optimization preview
* TWEAK: Filter the list of preloaded URLs
* FEATURE: Premium - Cache - Always purge this page
* TWEAK: Update seasonal notices
* TWEAK: Bump WP version requirement to 4.5+

= 3.1.8 - 12/Mar/2021 =

* FIX: Cache - Warning failed to open dir
* FIX: Premium - Unused images - Fixed issue with images including a size suffix similar to WP sizes
* FIX: Display optimization data based on retention period
* FIX: Scheduled cleanup settings - Invalid date selection
* TWEAK: Premium - Separate table optimisations per sub-site
* TWEAK: Premium - Unused images - Add compatibility with the Envira Gallery plugin
* TWEAK: Page caching: add support for Avada
* TWEAK: Add visual clue when image compression was cancelled
* TWEAK: Image compression - multi image selection using Ctrl/Shift keys
* TWEAK: Premium - Unused images - Reset last clicked image reference when `select none` is clicked
* FIX: Premium - Unused images - Pagination not working in the trash
* TWEAK: Prevent bots from indexing plugins list json file
* TWEAK: Minify - Added a setting to change the time stale cache should be kept
* TWEAK: Better support for Beaver Builder
* TWEAK: Prevent PHP warning when reading a file's size
* TWEAK: Cache - Purge the blog page when updating a post 
* TWEAK: Cache - Purge next and previous posts on post update
* TWEAK: Cache - Purge sitemap files on post update
 
= 3.1.7 - 12/Feb/2021 =

* FEATURE: Premium - Preload key requests (Preload fonts and other assets)
* FIX: Detecting Brotli compression issue
* FIX: Cache - PHP Warning in URLs to exclude from caching
* FIX: Premium - Unused images - Unused Images Tool not recognising Greek characters
* FIX: Button for disabling Gzip doesn't showing
* TWEAK: Database optimization - Prevent fatal error due to files missing
* TWEAK: Skip minify when SCRIPT_DEBUG is set to true
* TWEAK: Fixed Font-awesome settings
* TWEAK: Add support for different spellings of "Font-awesome"
* TWEAK: Update the feature comparison table
* TWEAK: Added the option to not show the warning before deleting a table
* TWEAK: Wipe all options upon plugin de-installation
* TWEAK: Premium - Lazy-load - Lazy load support for background images
* TWEAK: Minify - Add file size in the minify cache summary
* TWEAK: Detect conflicting plugins for GZIP issue
* TWEAK: Database optimization - Include all tables if database prefix is not set on WP install
* TWEAK: Premium - Unused images - added "X of X images loaded" for unused trash images
* TWEAK: Don't allow to remove actionscheduler_* tables
* TWEAK: Premium - Unused images - Show a progression screen when doing any action with unused images
* TWEAK: Cache - Enable cache for the old default permalink structure `domain.com/index.php/a-post-name` by creating a folder without the extension
* TWEAK: Show previous action as message on Trackbacks or Comments enable or disable.
* TWEAK: Prevent deprecation notice on PHP 8.0
* TWEAK: Update notices

= 3.1.6 - 17/Dec/2020 =

* FIX: Fix wrong class name

= 3.1.5 - 17/Dec/2020 =

* FEATURE: Introduction of Power tweaks (premium feature)
* FEATURE: Power tweak - replace WooCommerce "Get total spent" query by a faster one
* FIX: CloudFlare not detected on gzip and browser caching tabs
* FIX: Cloudflare caching issue
* FIX: Premium - Unused images - Download CSV warning
* FIX: PHP 8 compatibility issue WP_Optimize_Browser_Cache->prepare_interval()
* TWEAK: Upgrade jQuery code to deal with deprecations with the latest bundled version
* TWEAK: Fix wrong usage of wp_localize_script to prevent warnings in PHP 8
* TWEAK: Premium - Unused images - Update the data when moving images to the trash / deleting instead of doing a hard refresh
* TWEAK: Change how default exclusions are handled
* TWEAK: Now that PHP 8.0 has been released, bump minimum PHP version requirement from PHP 5.4 to 5.6.
* TWEAK: Delete WP-O's .htaccess rules at deactivation
* TWEAK: Premium - Unused images - Separate unused images and unused image sizes processes
* TWEAK: Update jQuery document ready style to the one not deprecated in jQuery 3.0
* TWEAK: Minify CSS - Possibility to toggle the google fonts `display=swap` parameter from the UI.
* TWEAK: Fix small UI issues
* TWEAK: Clean up all cron events when deactivating the plugin
* TWEAK: Premium - Possibility to set permissions for purging page cache and minify files.
* TWEAK: Bypass minify when editing a post using the Brizy editor
* TWEAK: Renamed UpdraftCentral's command classes filter
* TWEAK: Bump WP version requirement to 4.4+, and PHP version requirement to 5.4+
* TWEAK: Purge caches when updating a plugin / theme (also when updating using a ZIP archive)
* TWEAK: Improve the admin bar "cache" menu
* TWEAK: Show information about Cloudflare support
* TWEAK: Database optimization - Resume optimizing when a timeout occurs
* TWEAK: Remove redundant code
* TWEAK: Cache feature - Do not cache pages with fatal errors
* TWEAK: Cache feature - Do not cache RSS feeds
* TWEAK: Page caching - Prevent adding the "comment cookie" when ordering on WooCommerce

= 3.1.4 - 15/Sep/2020 =

* FIX: Prevent fatal error when updating

= 3.1.3 - 15/Sep/2020 =

* TWEAK: Added Oasis Workflow Pro tables to the list
* FIX: Unused images - restore from trash UI issue
* FIX: Premium - Unused images - Images trash works on multisite
* TWEAK: Prevent GLOB_BRACE warning on systems not supporting it
* TWEAK: Minify - Reset minified files when saving an Elementor page or post
* TWEAK: Minify - Purge cached assets when UpdraftCentral was updated.
* TWEAK: Minify - Enable users to defer all JavaScript, including the merged and minified assets
* TWEAK: Minify - Improve general compatibility with The Events Calendar and other plugins
* TWEAK: Image compression - prevent database warning when the table `ewwwio_images` does not exist
* TWEAK: Image compression - Detect already compressed images by other plugins (ShortPixel Image Optimizer, Smush, Imagify, Compress JPEG & PNG images by TinyPNG, EWWW Image Optimizer)
* TWEAK: Image compression - Added compression stats in the Media Library's list view
* TWEAK: Image compression - Possibility to restore all compressed images
* TWEAK: Image compression - Remove NitroSmush service, which is no longer active. 
* TWEAK: Image compression - Tweak user agent when requesting to resmush.it
* TWEAK: Preserve selected optimizations when saving settings
* TWEAK: Page caching - Prevent PHP Notice: Trying to get property 'comment_status' of non-object
* TWEAK: Cache - Do not serve from cache when a user has posted a comment
* TWEAK: Cache feature - Added integration with Cloudflare (Premium)
* TWEAK: Page caching - Rename variables in the global context to more specific names
* TWEAK: Premium - Prevent potential JS error in the "unused images" feature
* TWEAK: Premium - Unused images - Add support for Slider Revolution
* TWEAK: Premium - Unused images - use the URL stored in attachment meta-data as fallback
* TWEAK: Premium - Unused images - Only fetch image information when requesting the information to be displayed
* TWEAK: Premium - Lazy-load - Show a notice when a known plugin also provides lazy-loading, instead of disabling the feature
* TWEAK: Minify - Only load the required vendor classes instead of using composer's autoload in order to prevent compatibility issues
* TWEAK: Minify - Added filters `wpo_minify_get_js` and `wpo_minify_get_css` to enable users to do extra processing before saving the code
* TWEAK: Minify - Prevent PHP warning when no log is present
* TWEAK: Minify - Prevent error when the function gzencode doesn't exist
* TWEAK: Removed MetaSlider notice in the notices collection

= 3.1.2 - 03/Jun/2020 =

* TWEAK: Only load minify dependencies when the feature is enabled, reducing the risk of conflicts with plugins with obsolete/incompatible library versions

= 3.1.1 - 03/Jun/2020 =

* FIX: Minify - Make the feature unavailable when W3 Total Cache is active (an ancient version of the library in that plugin is incompatible and can cause a crash if either plugin attempts to perform minification)
* TWEAK: Tweak polling interval for fetching WP-O minify cache information

= 3.1.0 - 02/Jun/2020 =

* FEATURE: Major new feature: JS and CSS combination and minification. Read more at: https://getwpo.com/faqs/category/minification/
* FIX: Image compression - delete backup images in a non-dated folders
* FIX: Premium - Unused images - Only move relevant images to trash
* FIX: Cache feature - Show correct preloading status
* FIX: Fixed optimizations preview on multisite
* FIX: Cache feature - Fixed error handling for cache preload action
* FIX: Call to unavailable function was breaking page caching on old WP versions without add_filter() available early
* TWEAK: Premium - Do not show the loading overlay on the database screen when loading the unused images list
* TWEAK: Periodically update the plugins' tables list (plugin.json)
* TWEAK: Do not use wp_get_upload_dir() on WP versions before it is available
* TWEAK: Prevent JavaScript error when showing a notice after purging the cache
* TWEAK: Cache feature - Better handle errors when enabling or disabling caching
* TWEAK: Cache feature - Use HTTP headers to indicate page caching status
* TWEAK: Premium - Unused images - Added filter `wpo_unused_images_ids`
* TWEAK: Cache feature - Prevent purging the whole cache when saving a WooCommerce product
* TWEAK: Premium - Page cache - "Do not cache this post" setting to only be effective when viewing a single post or page.
* TWEAK: Cache feature - Added the filter wpo_cache_preload_sitemap_filename to enable overriding of the sitemap name used for preloading
* TWEAK: Make all tooltips accessible via keyboard navigation
* TWEAK: scandir() usages changed to opendir()
* TWEAK: Database optimizations - Add Gravityforms to list and tweak UI
* TWEAK: Cache feature - Preload indicates when using a sitemap
* TWEAK: Hide the "remember to save settings" notice after saving.
* TWEAK: Updater in paid version now will make checks on availability without needing login

= 3.0.19 - 31/Mar/2020 =

* FIX: Fix force tables optimisations checkboxes
* FIX: Fix tablesorter issue preventing the optimisations from displaying
* FIX: Premium - Fix Spam and Trashed Comments preview
* TWEAK: Premium - Possibility to exclude a page from cache from the page / post edit

= 3.0.18 - 27/Mar/2020 =

* TWEAK: Wipe WP-Optimize settings function
* FIX: Don't override advanced-cache.php if caching is disabled

= 3.0.17 - 19/Mar/2020 =

* FIX: Show image as uncompressed after restoring backup from the media modal
* FIX: Save the last state for "take a backup" checkboxes
* TWEAK: Load optimizations and database tables list via ajax
* TWEAK: Move database optimization settings to the database page
* TWEAK: Improve error handling for ajax requests
* TWEAK: Cache feature - Add the filter `wpo_cache_show_cached_by_comment` to enable users to hide the HTML comment <!-- Cached by WP-Optimize... -->
* TWEAK: Cache feature - Clear archive page cache when post is updated
* TWEAK: Cache feature - Possibility to exclude front page from the cache
* TWEAK: Cache feature - Deny direct access to cache files folder
* TWEAK: Cache feature - Prevent direct access to cache config content
* TWEAK: Image compression - Prevent confusing errors when restoring an image whose backup file was deleted
* TWEAK: Only show the plugin's own notices on WP-Optimize's pages
* TWEAK: Remove MetaSlider related message
* TWEAK: Premium - Page cache - Possibility to generate a cache file per country with WooCommerce geolocation
* TWEAK: Premium - Reorganise cache extensions to only keep the code required at the cache generation / fetching stage
* TWEAK: Premium - Unused images - add support for non-dated folders
* TWEAK: Premium - Unused images - Added wpo_unused_images_per_page filter for filtering images per page count
* TWEAK: Premium - Unused images - Possibility to move unused images to trash before completely deleting

= 3.0.16 - 27/Jan/2020 =

* FIX: Premium - Unused images - Fixed detection of -rotated and -scaled images
* TWEAK: Cache feature - Cache sitemap.xml and robots.txt
* TWEAK: Cache feature: fix scheduled preload
* TWEAK: Cache feature: save the value of wpo_current_url() to enhance compatibility with Weglot
* TWEAK: Fix permissions for restoring or compressing images on multisite
* TWEAK: Premium - Tweak UI when fetching unused image infos
* TWEAK: Premium - Added compatibility for Oxygen builder
* TWEAK: Premium - Added WP-CLI commands for managing cache

= 3.0.15 - 16/Dec/2019 =

* FIX: Image compression - Fix restoration on multisite
* FIX: Cache feature - Scheduled preload when a sitemap does not exists
* TWEAK: Check for headers_sent() before closing the browser connection
* TWEAK: Cache feature - Do not show clear cache buttons in the admin bar if the user doesn't have the right capability
* TWEAK: Cache feature - Don't cache REST API requests
* TWEAK: Tabs to point to the correct URL for direct access
* TWEAK: Only log the reason why an URL isn't cached if the constant WPO_CACHE_DEBUG is true
* TWEAK: Image compression - Added a new filter 'wpo_image_compression_single_image_options' to allow changing the image quality for each image.
* TWEAK: Cache feature - Added instructions how to edit advanced-cache.php file
* TWEAK: Detecting Cloudflare and Brotli compression before enabling GZIP

= 3.0.14 - 25/Nov/2019 =

* FIX: Fixed default option values for smush backup automatic deletion
* FIX: Prevent potential Fatal error when including notices class
* FIX: Image compression - Fixed division by zero notification
* FIX: Fix list of backup entities before removing unused images
* TWEAK: PHP 7.4 compatibility tweak in the fatal error handler
* TWEAK: Image compression feature - Backup of original image paths are now relative
* TWEAK: Page cache - Fix condition when displaying the message indicating the reason for not caching or serving cache
* TWEAK: Page cache - Do not save post to cache if comments are opened and the user has saved their information
* TWEAK: Page cache - intelligently handle Google Analytics tracking parameters in URL (Premium)
* TWEAK: Page cache - add a query parameter to force display of the reason for not caching a page or serving a cached page
* TWEAK: Cache feature - Added is_writable() checking before trying to write advanced-cache.php
* TWEAK: Premium - Optimize database optimisations for WP-CLI commands
* TWEAK: Premium - Don't run UI requests for WP-CLI actions
* TWEAK: Premium - Page cache - Add default WooCommerce currency to the cache config
* TWEAK: Page cache - Add the possibility to save default values to the cache config
* TWEAK: Page cache - Add a possible secondary cache extensions location using the constant 'WPO_CACHE_CUSTOM_EXT_DIR', to allow keeping the bundled extensions in their original location
* TWEAK: UI tweaks
* TWEAK: Add missing filename reference in error message
* TWEAK: Page cache - Purge cache when Autoptimize's cache is cleared
* TWEAK: Image compression - Compatibility with Elementor plugin
* TWEAK: Image compression - Added feature to mark all images as uncompressed
* TWEAK: Bump supported minimum WP version up to 3.9

= 3.0.13 - 21/Oct/2019 =

* FIX: Don't show VIEWs as corrupted database tables
* TWEAK: Image compression - Cancel button now stops the compression process
* TWEAK: Only show general notice when update notice isn't shown
* TWEAK: Improve message when Gzip compression is already enabled
* TWEAK: Premium - Use path to include lazy load script
* FIX: Image compression - Fixed detecting of uncompressed images
* TWEAK: Image compression - Use wp_remote_get() instead file_get_contents() for retrieving compressed images
* TWEAK: Use wp_remote_get() instead file_get_contents() for retrieving compressed images
* TWEAK: Cache feature - add a 'Purge all' cache button to the admin bar
* TWEAK: Premium - Prevent php warning in scheduled optimisations list
* TWEAK: Premium - Unused images feature - Add compatibility with Advanced Custom Fields (ACF) image and gallery fields

= 3.0.12 - 24/Sep/2019 =

* TWEAK: Cache - Purge cache files when updating menu, saving the customizer and editing widgets
* TWEAK: Cache - Do not show the reason for not caching when the request is DOING_CRON
* TWEAK: Premium - Unused images feature - Improved detection on sites with many posts/images
* TWEAK: Automatically delete smush image backups option
* TWEAK: Premium - Unused images feature - Better detection of featured images
* TWEAK: Cache - Ability to purge single page or post from cache
* TWEAK: Cache - Display the content of advanced-cache.php to the user if it was not writable when enabling cache
* TWEAK: Image compression - Automatically delete image backups option
* TWEAK: Image compression - metabox now inherits the settings from the main screen
* TWEAK: Image compression - Added feature to mark images as already compressed by another tool
* TWEAK: Image compression - Added detailed log information when image compression fails.
* TWEAK: Premium - Unused images feature - Improved detection on sites with many posts/images
* TWEAK: Premium - Unused images feature - Better detection of featured images
* TWEAK: Premium - Lazy load - Added WooCommerce support
* TWEAK: Premium - Increased warning level and visibility when deleting unused database tables and unused images
* TWEAK: Prevent a couple of unwanted PHP notices being logged when running cron via the command-line
* TWEAK: Tweaked update notice wording

= 3.0.11 - 07/Aug/2019 =

* FIX: Check the results of opendir() when emptying the cache, to prevent a possible infinite loop if it fails
* FIX: Compatibility issues with WordPress 4.0
* FIX: Replace function that did not exist on PHP 5.2
* TWEAK: Add work-around for plugins which call the WP action comment_post incorrectly
* TWEAK: Change the algorithm for locating file-based-page-cache.php to handle same-server site moves better
* TWEAK: Prevent an unwanted PHP notice caused by Action Scheduler purges

= 3.0.10 - 30/Jul/2019 =

* TWEAK: If short-circuiting the attachment_fields_to_edit filter result, return the pre-existing value
* TWEAK: Adjust wpo_delete_files() and related functions with extra sanity checks

= 3.0.9 - 30/Jul/2019 =

* FIX: Fix bug in logic for sending "Content-Encoding: gzip" header that could cause it to be sent prematurely with non-cached pages

= 3.0.8 - 30/Jul/2019 =

* FIX: Lazy-loading regression in recent Premium release
* FIX: Smush images selection on multisite
* FIX: Displaying WP-Optimize tabs menu on mobile devices
* TWEAK: Disable redundant lazy-loading feature when Divi theme is active
* TWEAK: Improve accuracy of message shown when it is not possible to automatically enable Gzip compression of static resources
* TWEAK: Only output reasons a page was not cached if the wp_footer action was run

= 3.0.7 - 25/Jul/2019 =

* FIX: Fix some logic bugs related to the decision whether to send gzip-encoded cached content
* FEATURE: To aid debugging if WP_DEBUG is turned on then if a page was *not* cached, then the HTML source will now contain the reason(s) why not in the footer
* TWEAK: The is_user_logged_in() function is not necessarily available during a WP 'technical difficulties' scenario
* TWEAK: Purge site homepage cache after updating post or publishing a new post (can be over-ridden with the filter wpo_delete_cached_homepage_on_post_update)

= 3.0.6 - 25/Jul/2019 =

* FIX: Regression causing incorrect JavaScript filenames in the Premium release in 3.0.5
* TWEAK: Also add cache-busting for the compiled handlebars file
* TWEAK: Change the handlebars enqueue handle to prevent double loading

= 3.0.5 - 23/Jul/2019 =

* FIX: Short-circuit Updraft_Smush_Manager::add_compress_button_to_media_modal() outside of a dashboard context, so that plugins or themes that hook into some dashboard hooks outside of that context can't cause fatal errors
* TWEAK: Added suffixes with WP-Optimize version number to js, css files
* TWEAK: Change the method used to generate the configuration file path in advanced-cache.php; no issues were reported, but analysis indicated a potential way to generate a path that would not agree with what was written by saving settings; and also another way to generate an invalid path on Windows webservers running on non-standard ports.
* TWEAK: Use WPO_CACHE_CONFIG_DIR constant instead string value in advanced-cache.php

= 3.0.4 - 20/Jul/2019 =

* FIX: Fixed a regression in 3.0 with orphaned relationship data optimization

= 3.0.3 - 20/Jul/2019 =

* TWEAK: Prevent saving of page cache settings when the page cache was already off and another page cache plugin was active from over-writing the other plugin's advanced-cache.php

= 3.0.2 - 19/Jul/2019 =

* TWEAK: Rename in order to cache-bust sites that cached old versions of the JS admin scripts
* TWEAK: Prevent unwanted PHP notice if saving page cache settings without ever having turned the cache on

= 3.0.1 - 18/Jul/2019 =

* FIX: Prevent a potential stray line of text appearing

= 3.0.0 - 17/Jul/2019 =

* FEATURE: Adds a caching feature, with page cache, browser cache control and gzip control
* TWEAK: Smush feature added to medial modal
* TWEAK: Remove references to Keyy
* TWEAK: Image compression metabox tweaks
* TWEAK: Preload after purging, If preload schedule is enabled
* TWEAK: Prevent image compression AJAX call from firing upon every tab change
* TWEAK: Load assets in admin_enqueue_scripts()
* TWEAK: Smush all image sizes
* TWEAK: Add quick feedback link
* TWEAK: Delete the original backup file when an attachment file has been deleted
* TWEAK: Remove die() from shutdown handler
* TWEAK: Remove references to Keyy

= 2.3.4 - 10/Jun/2019 =

* FIX: Incorrect file paths on multisites 
* FIX: Wrong DB Schema caused image compression to fail on multisites
* TWEAK: Improve image compression UI
* TWEAK: Add the possibility to hide the image optimisation metabox in the media edit screen.
* TWEAK: Fix potential PHP notice in task queue when Automatic Smush is activated
* TWEAK: Improve JSON-reparser to cope with even more exotic junk from some setups with problems elsewhere in their stack
* TWEAK: Remove the numerical index column from the list of tables
* TWEAK: Prevent methods being called when create_task returns false
* TWEAK: Prevent PHP log warnings when images are missing from server (log in WP-O internal log instead)
* TWEAK: Changed the default settings page from 'Settings' to 'Database'
* TWEAK: Better discoverability of Premium features
* TWEAK: Use new task manager class Updraft_Task_Manager_1_1

= 2.3.3 - 17/Apr/2019 =

* FIX: Revert faulty change to the default settings page in 2.3.2, which prevented optimization buttons working

= 2.3.2 - 17/Apr/2019 =

* FIX: Non-ASCII filenames could get mangled in the image optimization preview, resulting in images not shown (and WP 404 generation on the back-end).
* FIX: Optimizing a table now runs correctly after automatic pre-optimize backup
* TWEAK: Changed the default settings page from 'Settings' to 'Database'
* TWEAK: Updated plugin links

= 2.3.1 - 16/Apr/2019 =

* FIX: Fix a code path that could cause a fatal error on PHP 5.2
* TWEAK: Optimizing a table should then refresh the information in the UI shown for it
* TWEAK: Use an image compression logfile path inside the uploads hierarchy, with unpredictable salted element

= 2.3.0 - 12/Apr/2019 =

* FEATURE: Compress images using lossy and lossless compression - both existing images, and newly uploaded
* FIX: Wrong information about corrupted tables
* TWEAK: Prevent PHP notices on calls from UpdraftCentral
* TWEAK: Prevent notices about Premium showing in Premium, correct button text, update coupon
* TWEAK: Prevent the overdue cron checker running twice instead of once

= 2.2.13 - 04/Mar/2019 =

* FIX: Fixed RTL layout
* FIX: Detect more relationships between tables and plugins in orphaned database tables optimization
* FIX: Fixed orphaned relationships optimization
* TWEAK: The informational list of WP core tables missed some possible extra tables on multisite

= 2.2.12 - 07/Feb/2019 =

* TWEAK: Updated information on More plugins tab
* TWEAK: Fix header layout when a system or third party notification are shown
* TWEAK: (Premium) Fix layout in unused images list mode
* TWEAK: Improve data reliability in javascript
* TWEAK: Improve orphaned relationships data optimization
* TWEAK: Wrong message for "remove spam and trashed comments" optimization
* TWEAK: Output additional information if table was not deleted
* FIX: Added escaping for table names in database queries
* FIX: Fix another possible fatal error due to missing get_plugins() function
* FIX: Improve identification of installed/active plugins

= 2.2.11 - 16/Jan/2019 =

* FIX: A regression in the "identify table by owner" feature caused optimizing to silently fail on some tables
* TWEAK: Added ability to exclude lazy load images by class

= 2.2.10 - 11/Jan/2019 =

* FEATURE: Added the ability to download unused images list (Premium version) as a CSV file
* FIX: Load scripts and styles only on WP-Optimize pages
* FIX: Fix a possible fatal error due to missing get_plugins() function
* TWEAK: Remember selected optimizations on Database page
* TWEAK: Prevent PHP notices when saving settings or optimizing in some circumstances

= 2.2.9 - 03/Jan/2019 =

* FIX: Change a newly-introduced fragment that was not compatible with PHP 5.2
* TWEAK: Tweak some other code that had PHP 5.2 compatibility issues

= 2.2.7 - 31/December/2018 =

* RE-FACTOR: Refactoring and reorganisation of the UI
* TWEAK: Added feature to view unused images as list
* TWEAK: Fix sorting sizes columns in Tables information to take into account textual modifiers
* FIX: MetaSlider images detected as unused
* FIX: Preview for Trashed posts optimization doesn't work
* FIX: Unselected optimizations could be run on a scheduled run

= 2.2.6 - 30/October/2018 =

* FEATURE: Added Gzip compression support
* FIX: Unexpected content in the footer after preview popup closed
* TWEAK: Mark as supporting WordPress 5.0
* TWEAK: Update seasonal notices
* TWEAK: Removed redundant checkbox for Lazy Loading settings
* FEATURE: Remove orphaned database tables, and identify (many) known tables by plugin.

= 2.2.5 - 24/August/2018 =

* FEATURE: Preview data before deleting. (Premium)
* FEATURE: Lazy Loading for images, iframes and videos. (Premium)
* FEATURE: Added custom capabilities wpo_prevent_run_optimizations and wpo_prevent_manage_options (Premium)
* FIX: Correct tables order sorting
* FIX: Wrong numbers in total cleaned field
* FIX: Don't show incorrect overhead value if option innodb_file_per_table disabled
* TWEAK: Added option to clean "all" transient options and network-wide transient options for multisite WordPress installation
* TWEAK: Links to UpdraftPlus automatically Install/Activate UpdraftPlus plugin
* TWEAK: FAQ links point to getwpo.com
* TWEAK: Auto-draft, revision posts and pingback comments removing with their meta data
* TWEAK: Scheduler is not using the WordPress timezone settings
* TWEAK: Detecting corrupted tables in background.
* TWEAK: Unused Images optimization correctly detects images in pages built with popular plugins - Page Builder by SiteOrigin, Visual Composer, Beaver Builder, Elementor.
* TWEAK: Paginate unused images
* TWEAK: Added checkbox for select all optimizations
* TWEAK: Prevent deleting homepage images in image optimization
* TWEAK: Override the default multisite site list fetch limit of 100 sites

= 2.2.4 - 07/May/2018 =

* TWEAK: Changed the term 'Automatic' to 'Scheduled'.
* TWEAK: Show correct table type for views
* TWEAK: Fixed string spelling and syntax errors
* TWEAK: Disabled Simple History logging option if plugin is not installed.
* TWEAK: Prevented PHP notices in repair tables functionality

= 2.2.3 - 04/Apr/2018 =

* FEATURE: Added the ability to repair corrupted database tables
* FIX: Fixed dismiss notices functionality
* FIX: When detecting potentially unused images, exclude those found mentioned in the options table(s)
* TWEAK: Load WPO translations (logger classes info included) when template is pulled for UpdraftCentral-WPO module
* TWEAK: Add get_js_translation command for the UpdraftCentral WPO module
* TWEAK: Added logging for fatal errors

= 2.2.2 - 28/Feb/2018 =

* TWEAK: Prevent possible PHP notice when parsing logger options

= 2.2.1 - 28/Feb/2018 =

* FIX: Fix number counting in Table information tab
* FIX: Fix InnoDB optimization UI
* TWEAK: Removed orphaned attachment optimization from optimizations UI list

= 2.2.0 - 19/Feb/2018 =

* FEATURE: Added the ability to export/import WP-Optimize settings
* FEATURE: Extended the logging class to include logging for Simple History Logger, Slack, Email, syslog and a simple 'ring' log
* FEATURE: Added the ability to optimize ARCHIVE and Aria (MariaDB) database tables.
* FEATURE: Added the ability to sort data in the "Table Information" tab
* FEATURE: Added the ability to search tables in "Table Information" tab
* FEATURE: Added the ability to optimize an individual table. (Premium)
* FEATURE: Added the ability to optimize multisites. (Premium)
* FEATURE: Allow the user to create arbitrarily complex automatic optimization schedules (Premium)
* FEATURE: Added ability to use WP CLI interface for run optimizations. (Premium)
* FIX: Auto clean-up settings not optimizing database tables
* FIX: Comments count after related to comments optimization
* FIX: Fix unapproved comments count
* TWEAK: Add functions to pull WP-Optimize templates for UpdraftCentral
* TWEAK: Allow user to tick the "Take a backup with UpdraftPlus before optimizing" option from UpdraftCentral
* TWEAK: Show last automatic optimization time using site's configured timezone and locale
* TWEAK: Extra MySQL and MariaDB checks for optimization, along with an over-ride functionality.
* TWEAK: updated previous optimizations and added optimizations for trash posts, trash comments and orphaned attachments
* TWEAK: Use higher-quality spinner image
* TWEAK: Adjusted notices about other products
* TWEAK: Added message for multisite users with proposal to upgrade to Premium.
* TWEAK: Optimize the check for whether both free and Premium are installed
* TWEAK: Added Premium / Plugin Family tab
* TWEAK: Added seasonal dashboard notices  

= 2.1.1 - 28/Feb/2017 =

* FEATURE: Added the ability to take a automatic backup with UpdraftPlus (https://updraftplus.com) before an optimization
* FEATURE: When optimizing from the dashboard, tables are now optimized one by one, to reduce the scope for timeouts
* FIX: Removal of sitemeta items from main site on multisite install was not proceeding
* TWEAK: Adding premium bootstrapping to WP-Optimize for adding premium features in the future
* TWEAK: A few wording tweaks, plus automatically refresh the page if the 'admin bar menu' option is changed
* TWEAK: Introduce internal logging API

= 2.1.0 - 28/Dec/2016 =

* FOCUS: This release concentrates upon the user-interface, and in particular upon improving the clarity of each part, and making optimizations, saves and other actions possible without page reloads.
* FEATURE: Any optimisation can now be run individually with a single button press
* TWEAK: All optimisations run via the dashboard page are now run via AJAX (no page refresh)
* TWEAK: Settings saving now takes place via AJAX (no page refresh)
* TWEAK: Navigation between different tabs now takes place without a page refresh
* TWEAK: The "trackback/comments" actions section now operates via AJAX (no page refresh needed)
* TWEAK: "Refresh" button in the "Status" widget now refreshes via AJAX (no page refresh needed)
* TWEAK: When saving settings or running an optimization, the "Status" widget now automatically refreshes
* TWEAK: Make the admin bar menu into a drop-down, making it quicker to access individual tabs
* TWEAK: Call set_time_limit to reduce the chances of PHP self-terminating via reaching max_execution_time
* TWEAK: Introduce dashboard notice infrastructure
* TWEAK: The lines showing information on how many spam/trashed posts and comments existed were incomplete

= 2.0.1 - 12/Dec/2016 =

* OWNERSHIP: WP-Optimize is now under the leadership of Team UpdraftPlus - https://updraftplus.com. A big thank you to Ruhani (who remains on-board) for his leadership of WP-Optimize until this point! Layout, branding and links have been altered to reflect this change.
* RE-FACTOR: Internal code completely re-factored, laying the foundations for future improvements
* TWEAK: Various filters introduced internally for easier customisation
* TWEAK: Marked form element labels, so that they can be clicked
* TWEAK: Various small UI improvements (more to come in future releases)
* FIX: Previous versions could potentially run OPTIMIZE commands on tables in the same MySQL database (if it was shared) belonging to other sites
* FIX: Previous versions were not deleting most delete-able transients. This is now fixed, with the modification that we now delete all *expired* transients.
* LANGUAGES: Removed language packs and screenshots that are already carried by wordpress.org, reducing the plugin download / install size

= 1.9.1 =
* Ability to clean up Unused Post Meta, Comment Meta and Broken Relationship Data
* Warning prompts for RED marked items and optimize button
* Better transient options cleaning.
* Language files update
* Various other fixes

= 1.9 =
* 27 Weeks retention option equivalent to 6 month
* Compatibility update.
* Language files update
* Removed email notifications, it doesn't work on many servers
* Various other fixes

= 1.8.9.10 =
* Security Patch provided by Dion at WordPress.org and Security report provided by http://planetzuda.com .
* Language files update

= 1.8.9.8 =
* Daily Schedule Option Added
* Email notification on automatic optimization, default email is admin email address. You can change this in settings

= 1.8.9.7 =
* BUGFIX for Settings screen
* Enable/Disable trackbacks / comments buttons removal and use select box instead. Extra button caused the Auto Scheduler to get into reset mode.

= 1.8.9.6 =
* There were few number formatting problem and detection of InnoDB table format. Charles Dee Rice solved the problems that I missed out. Thank you!
* Duplicate msg fixed
* Enable/Disable trackbacks for all published post
* Enable/Disable comments for all published post

= 1.8.9 =
* ONE MILLION+ Downloads. THANK YOU!!
* Language updates platform - see readme file for details.
* Mixed type tables optimization supported and in BETA
* Removal of akismet metadata from comments
* Removal of other stale metadata from comments
* InnoDB tables won't be optimized.
* Main screen user selection will be saved. Red items selection will not be saved
* Scheduled time display will be shown according to WordPress blog local time

= 1.8.6 =
* Language files update
* Fix issues with total gain number problem
* InnoDB tables detected and features disabled automatically, tables view will not show Overhead. Main view will not show space saved, or total gain.

= 1.8.5 =
* Version bump + modified translator names

= 1.8.4 =
* Problem with readme file changes

= 1.8.3 =
* Minor fixes

= 1.8.1 =
* A whole lot more code optimization
* Slick new interface
* Responsive mobile interface, supports running from iPhone/Android/Tablets
* Tables moved to independent tab
* Optimize faster
* GitHub updater support
* I do not monitor WP forums, support email at plugins(at)ruhanirabin.com

= 1.7.4 =
* More Translation compatibility.
* Added MYSQL and PHP versions beside the Optimizer tab.

= 1.7.3 =
* Fixed Problems with wpMail.
* Fixed Problems with wpAdmin menubar.
* Fixed Permission issues on some site.
* Language files update

= 1.7.2 =
* All MySQL statements re-factored into native WP database calls - necessary for future versions of MySQL and WordPress.
* Upgrade to match WordPress 3.9 changes.
* Language files update
* Now postmeta cleanup is disabled from code - it will be updated soon with native WordPress postmeta cleaning options.

= 1.6.2 =
* Language files update

= 1.6.1 =
* Fixed - trashed Comments was not clearing out.
* Language files update

= 1.5.7 =
* Language files update

= 1.5.6 =
* "Unused Tags cleanup" option made a problem on some WordPress sites that it deletes empty categories. Since I am unable to replicate this problem. I am making this option disabled.
* Language files update
* Minor maintenance and fixes.

= 1.5.5 =
* Safe clean up options are selected by default, defaults are not by user preference for now (Optimizer Page).
* All the potentially dangerous clean up options are MARKED RED.
* Language files update
* New features explained - http://j.mp/HBIoVT (read the blog post).

= 1.5.4 =
* More path related fixes for various warnings. Maintenance

= 1.5.2 =
* Fatar error fix, if it disabled your wp admin, please remove the wp-optimize directory and reinstall again.

= 1.5.1 =
* Option to add or remove link on wp admin bar (even enabled - it is visible to admin only).
* New admin interface.
* Settings to select items for automatic optimization.
* Removal of WordPress transient options
* Removal of orphaned post meta tags.
* Removal of unused tags.
* 3 different schedule times added (weekly, bi-weekly and monthly).
* Language files update
* Code optimization and translation strings updated.
* Integrated development log from TRAC

= 1.1.2 =
* removed persistent admin bar menu item
* Language files update

= 1.1.1 =
* Fix Fatal Error.

= 1.1.0 =
* Added WP-Optimize to admin menu bar on top. Always accessible.
* Added wp-optimize.pot file for translators (inside ./languages/ folder).
* Last auto optimization timestamp / display
* Fix possible scheduler bug as requested at support forum
* Fix some other codes regarding SQL query parameters
* Ability to keep last X weeks of data, any junk data before that period will be deleted - this option affects both Auto and Manual process. Appreciate time and help from Mikel King (http://mikelking.com/) about this matter.

= 1.0.1 =
* Removed auto cleanup of trackbacks or pingbacks.. it's better for people to do it manually.

= 0.9.8-beta =
* added beta tag

= 0.9.8 =
* Remove all trackbacks and pingbacks (can significantly reduce db size)
* Remove all Trash Comments and Posts
* Enable/Disable weekly schedules of optimization. This is an EXPERIMENTAL feature. It may or may not work on all servers.

= 0.9.4 =
* Non Initialized variables fixes as of https://wordpress.org/support/topic/plugin-wp-optimize-errors-in-debug-mode?replies=2

= 0.9.3 =
* Removed security tools.
* Full database size displayed

= 0.9.2 =
* Now the plugin is visible to site administrators only. Authors, Contributors, Editors won't be able to see it.

= 0.9.1 =
* Fixed problem with database names containing "-" .
* NEW Main Level Menu Item added for WP-Optimize, You might need to scroll down to see it
* Compatibility with WordPress 3.1
* Language files update
* Added auto draft post removal feature

= 0.8.0 =
* Added Multilanguage capability
* Language files update

= 0.7.1 =
* POST META Table cleanup code removed cause it is making problems with many hosts

= 0.7 =
* Added cleanup of POST META Table along with the revisions
* Fixed some minor PHP tags which causes the total numbers to disappear
* Now requires MySQL 5.1.x and PHP 5.1.x

= 0.6.5.1 =
* Fix Interface

== Upgrade Notice ==
* 3.6.0: One premium feature added. Ability to add missing image dimension attributes to image tags, a lot of fixes and tweaks - a recommended update for all
