Autoptimize

Descripción

Autoptimize hace muy fácil la optimización de tu sitio. Puede combinar, minimizar y cachear scripts y estilos, inyectar CSS en la cabecera de la página por defecto así como también añadir CSS crítico integrado y retrasar la carga del CSS combinado completo, mover y retrasar la carga de scripts al pie de página y minimizar el HTML. Puedes optimizar y cargar imágenes en diferido, optimizar las Google Fonts, cargar de forma asíncrona el JavaScript no combinado, eliminar los cruciales emojis del núcleo de WordPress, y más. Así pues, puede mejorar el rendimiento de tu sitio incluso cuando ya está usando HTTP/2. Hay una extensa API disponible que te permite adaptar Autoptimize a las necesidades de cada sitio.
Si consideras que el rendimiento es importante, deberías usar uno de los muchos plugins de caché para hacer caché de página. Algunos buenos candidatos para complementar Autoptimize de esa forma son, por ejemplo: WP Super Cache, HyperCache, Comet Cache o KeyCDN’s Cache Enabler.

Soporte premium
Proporcionamos excelentes servicios de soporte de Autoptimize Pro y de optimización de rendimiento web, ¡revisa nuestra oferta en https://autoptimize.com/!

(La imagen Speed-surfing tiene licencia creative commons de LL Twistiti)

Instalación

Sólo instálalo desde la pantalla de «Plugins > Añadir nuevo» de tu WordPress y estará hecho. La instalación manual también es muy sencilla:

  1. Sube el archivo zip y descomprímelo en el directorio /wp-content/plugins/
  2. Activa el plugin desde el menú ‘Plugins’ de WordPress
  3. Ve a Ajustes > Autoptimize y activa las opciones que quieras. Generalmente esto significa «Optimizar HTML/ CSS/ JavaScript».

FAQ

¿Qué hace el plugin para ayudar a la velocidad de mi sitio?

Concatena todos los scripts y estilos, los minimiza y comprime, añade caducidad a las cabeceras y luego las almacena en caché, mueve los estilos a la cabecera de la página y scripts (opcional) al pie de página. También minimiza el código HTML, haciendo que tu página sea realmente ligera.

Pero tengo HTTP/2, entonces ¿no necesito usar Autoptimize?

Sin duda, HTTP/2 es un gran paso adelante, ya que reduce significativamente el impacto de múltiples solicitudes del mismo servidor al utilizar la misma conexión para realizar varias solicitudes simultáneas. Dicho esto, combinar CSS y JS todavía puede tener mucho sentido, como se describe en este artículo de css-tricks.com y esta entrada de blog de uno de los ingenieros de eBay. La conclusión: configurar, probar, reconfigurar, volver a probar, retocar y ver qué funciona mejor en tu contexto. Tal vez solo necesites HTTP/2, tal vez HTTP/2 más combinar y minimizar, tal vez HTTP/2 y minimizar (algo que Autoptimize también puede hacer, simplemente desmarca las opciones «combinar archivos JS» y/o «combinar archivos CSS»). Por último, Autoptimize puede hacer mucho más que «solo» optimizar tu JS y CSS por supuesto 😉

¿Esto funcionará con mi blog?

Si bien Autoptimize no ofrece ninguna garantía, en general funcionará perfectamente si lo configuras correctamente. Consulta «Diagnosticar problemas» más abajo para obtener información sobre cómo configurar en caso de problemas.

¿Por qué el archivo «jquery.js» no está optimizado?

A partir de Autoptimize versión 2.1, el archivo «jquery.js» del núcleo de WordPress no está optimizado por la sencilla razón de que muchos plugins populares inyectan JavaScript integrado que no se combina (debido a posibles problemas de tamaño de caché con código JavaScript integrado) y que confía en que jQuery se encuentre disponible; por lo que excluir el archivo «jquery.js» asegura que funcionen la mayoría de los sitios. Si también deseas optimizar jQuery, puedes eliminarlo de la lista de exclusión de la optimización de JavaScript (es posible que tengas que activar «añadir también JavaScript integrado» o cambiar a «forzar JavaScript en la cabecera»).

Why is Autoptimized JS render blocking?

If not «forced in head», Autoptimized JS is not render blocking as it has the «defer» flag added. It is however possible another plugin removes the «defer»-flag. Speed Booster Pack was reported doing this, but the behavior has not been confirmed yet.

Why is the autoptimized CSS still called out as render blocking?

With the default Autoptimize configuration the CSS is linked in the head, which is a safe default but has Google PageSpeed Insights complaining. You can look into «inline all CSS» (easy) or «inline and defer CSS» (better) which are explained in this FAQ as well.

¿Cuál es el uso de «Incrustar y retrasar CSS»?

CSS in general should go in the head of the document. Recently a.o. Google started promoting deferring non-essential CSS, while inlining those styles needed to build the page above the fold. This is especially important to render pages as quickly as possible on mobile devices. As from Autoptimize 1.9.0 this is easy; select «inline and defer CSS», paste the block of «above the fold CSS» in the input field (text area) and you’re good to go!

¿Pero cómo uno puede averiguar cuál es el CSS «antes de hacer scroll»?

There’s no easy solution for that as «above the fold» depends on where the fold is, which in turn depends on screensize. There are some tools available however, which try to identify just what is «above the fold». This list of tools is a great starting point. The Sitelocity critical CSS generator and Jonas Ohlsson’s criticalpathcssgenerator are nice basic solutions and http://criticalcss.com/ is a premium solution by the same Jonas Ohlsson. Alternatively this bookmarklet (Chrome-only) can be helpful as well.

¿O deberías poner incrustado todo el CSS?

Respuesta corta: probablemente no. Aunque incrustar todo el CSS hará que el CSS no bloquee la carga, también hará que tu página HTML base sea significativamente más grande, requiriendo más «viajes de ida y vuelta». Además, si se solicitan varias páginas durante una misma sesión de navegación, el CSS incrustado es enviado de nuevo cada vez, mientras que cuando no está integrado se serviría desde la caché.

Mi caché es cada vez más grande, ¿no vacía Autoptimize la caché?

Autoptimize does not have its proper cache purging mechanism, as this could remove optimized CSS/JS which is still referred to in other caches, which would break your site. Moreover a fast growing cache is an indication of other problems you should avoid.

Instead you can keep the cache size at an acceptable level by either:

  • disactivating the «aggregate inline JS» and/ or «aggregate inline CSS» options
  • excluding JS-variables (or sometimes CSS-selectors) that change on a per page (or per pageload) basis. You can read how you can do that in this blogpost.

Despite above objections, there are 3rd party solutions to automatically purge the AO cache, e.g. using this code or this plugin, but for reasons above these are to be used only if you really know what you’re doing.

¿«Vaciar la caché» parece no funcionar?

When clicking the «Delete Cache» link in the Autoptimize dropdown in the admin toolbar, you might to get a «Your cache might not have been purged successfully». In that case go to Autoptimizes setting page and click the «Save changes & clear cache»-button.

Además, no te preocupes si tu caché nunca baja de 0 archivos/ 0KB, ya que Autoptimize (a partir de la versión 2.2) precargará automáticamente la caché inmediatamente después de haberla limpiado para acelerar significativamente la minimización.

¡Mi sitio aparece roto cuando purgo la caché de Autoptimize!

When clearing AO’s cache, no page cache should contain pages (HTML) that refers to the removed optimized CSS/ JS. Although for that purpose there is integretion between Autoptimize and some page caches, this integration does not cover 100% of setups so you might need to purge your page cache manually.

¿Puedo seguir usando Rocket Loader de Cloudflare?

Cloudflare Rocket Loader is a pretty advanced but invasive way to make JavaScript non-render-blocking, which Cloudflare still considers Beta. Sometimes Autoptimize & Rocket Loader work together, sometimes they don’t. The best approach is to disable Rocket Loader, configure Autoptimize and re-enable Rocket Loader (if you think it can help) after that and test if everything still works.

At the moment (June 2017) it seems RocketLoader might break AO’s «inline & defer CSS», which is based on Filamentgroup’s loadCSS, resulting in the deferred CSS not loading.

He probado Autoptimize pero mi puntuación de Google PageSpeed apenas ha mejorado

Autoptimize is not a simple «fix my Pagespeed-problems» plugin; it «only» aggregates & minifies (local) JS & CSS and images and allows for some nice extra’s as removing Google Fonts and deferring the loading of the CSS. As such Autoptimize will allow you to improve your performance (load time measured in seconds) and will probably also help you tackle some specific Pagespeed warnings. If you want to improve further, you will probably also have to look into e.g. page caching and your webserver configuration, which will improve real performance (again, load time as measured by e.g. https://webpagetest.org) and your «performance best practise» pagespeed ratings.

¿Qué puedo hacer con la API?

A whole lot; there are filters you can use to conditionally disable Autoptimize per request, to change the CSS- and JS-excludes, to change the limit for CSS background-images to be inlined in the CSS, to define what JS-files are moved behind the aggregated one, to change the defer-attribute on the aggregated JS script-tag, … There are examples for some filters in autoptimize_helper.php_example and in this FAQ.

¿Cómo funciona una CDN?

Starting from version 1.7.0, CDN is activated upon entering the CDN blog root directory (e.g. http://cdn.example.net/wordpress/). If that URL is present, it will used for all Autoptimize-generated files (i.e. aggregated CSS and JS), including background-images in the CSS (when not using data-uri’s).

If you want your uploaded images to be on the CDN as well, you can change the upload_url_path in your WordPress configuration (/wp-admin/options.php) to the target CDN upload directory (e.g. http://cdn.example.net/wordpress/wp-content/uploads/). Do take into consideration this only works for images uploaded from that point onwards, not for images that already were uploaded. Thanks to BeautyPirate for the tip!

Why aren’t my fonts put on the CDN as well?

Autoptimize supports this, but it is not enabled by default because non-local fonts might require some extra configuration. But if you have your cross-origin request policy in order, you can tell Autoptimize to put your fonts on the CDN by hooking into the API, setting autoptimize_filter_css_fonts_cdn to true this way;

add_filter('autoptimize_filter_css_fonts_cdn',__return_true);
I’m using Cloudflare, what should I enter as CDN root directory

Nothing, when on Cloudflare your autoptimized CSS/ JS is on the Cloudflare’s CDN automatically.

¿Cómo puedo forzar que los archivos unificados sean CSS o JS estático en lugar de PHP?

If your webserver is properly configured to handle compression (gzip or deflate) and cache expiry (expires and cache-control with sufficient cacheability), you don’t need Autoptimize to handle that for you. In that case you can check the «Save aggregated script/css as static files?»-option, which will force Autoptimize to save the aggregated files as .css and .js-files (meaning no PHP is needed to serve these files). This setting is default as of Autoptimize 1.8.

¿Cómo funciona «excluir de la optimización»?

Both CSS and JS optimization can skip code from being aggregated and minimized by adding «identifiers» to the comma-separated exclusion list. The exact identifier string to use can be determined this way:

  • if you want to exclude a specific file, e.g. wp-content/plugins/funkyplugin/css/style.css, you could simply exclude «funkyplugin/css/style.css»
  • if you want to exclude all files of a specific plugin, e.g. wp-content/plugins/funkyplugin/js/*, you can exclude for example «funkyplugin/js/» or «plugins/funkyplugin»
  • if you want to exclude inline code, you’ll have to find a specific, unique string in that block of code and add that to the exclusion list. Example: to exclude <script>funky_data='Won\'t you take me to, Funky Town'</script>, the identifier is «funky_data».
Configurar y diagnosticar problemas en Autoptimize

After having installed and activated the plugin, you’ll have access to an admin page where you can to enable HTML, CSS and JavaScript optimization. According to your liking, you can start of just enabling all of them, or if you’re more cautious one at a time.

If your blog doesn’t function normally after having turned on Autoptimize, here are some pointers to identify & solve such issues using «advanced settings»:

  • If all works but you notice your blog is slower, ensure you have a page caching plugin installed (WP Super Cache or similar) and check the info on cache size (the soution for that problem also impacts performance for uncached pages) in this FAQ as well.
  • In case your blog looks weird, i.e. when the layout gets messed up, there is problem with CSS optimization. Try excluding one or more CSS-files from being optimized. You can also force CSS not to be aggregated by wrapping it in noptimize-tags in your theme or widget or by adding filename (for external stylesheets) or string (for inline styles) to the exclude-list.
  • In case some functionality on your site stops working (a carroussel, a menu, the search input, …) you’re likely hitting JavaScript optimization trouble. Change the «Aggregate inline JS» and/ or «Force JavaScript in head?» settings and try again. Excluding ‘js/jquery/jquery.js’ from optimization (see below) and optionally activating «Add try/catch wrapping«) can also help. Alternatively -for the technically savvy- you can exclude specific scripts from being treated (moved and/ or aggregated) by Autoptimize by adding a string that will match the offending Javascript or excluding it from within your template files or widgets by wrapping the code between noptimize-tags. Identifying the offending JavaScript and choosing the correct exclusion-string can be trial and error, but in the majority of cases JavaScript optimization issues can be solved this way. When debugging JavaScript issues, your browsers error console is the most important tool to help you understand what is going on.
  • If your theme or plugin require jQuery, you can try either forcing all in head and/ or excluding jquery.js (and jQuery-plugins if needed).
  • If you can’t get either CSS or JS optimization working, you can off course always continue using the other two optimization-techniques.
  • If you tried the troubleshooting tips above and you still can’t get CSS and JS working at all, you can ask for support on the WordPress Autoptimize support forum. See below for a description of what information you should provide in your «trouble ticket»
¿He excluido los archivos, pero aun están siendo optimizados?

AO minifies excluded JS/ CSS if the filename indicates the file is not minified yet. As of AO 2.5 you can disable this on the «JS, CSS & HTML»-tab under misc. options by unticking «minify excluded files».

Help, I have a blank page or an internal server error after enabling Autoptimize!!

Asegúrate que no estas ejecutando otros plugins de minimización de HTML, CSS o JS (BWP minify, WP minify, …) simultaneamente con Autoptimize o desactiva esa funcionalidad en tu plugin de caché de páginas (W3 Total Cache, WP Fastest Cache, …). Prueba a activar solamente la optimización de CSS o la de JS para ver cuál es la causa del error del servidor y sigue los pasos genéricos del diagnóstico para encontrar una solución.

But I still have blank autoptimized CSS or JS-files!

If you are running Apache, the htaccess file written by Autoptimize can in some cases conflict with the AllowOverrides settings of your Apache configuration (as is the case with the default configuration of some Ubuntu installations), which results in «internal server errors» on the autoptimize CSS- and JS-files. This can be solved by setting AllowOverrides to All.

Can’t log in on domain mapped multisites

Domain mapped multisites require Autoptimize to be initialized at a different WordPress action, add this line of code to your wp-config.php to make it so to hook into setup_theme for example:

define( 'AUTOPTIMIZE_SETUP_INITHOOK', 'setup_theme' );
I get no error, but my pages are not optimized at all?

Autoptimize does a number of checks before actually optimizing. When one of the following is true, your pages won’t be optimized:

  • when in the customizer
  • if there is no opening <html tag
  • if there is <xsl:stylesheet in the response (indicating the output is not HTML but XML)
  • if there is <html amp in the response (as AMP-pages are optimized already)
  • if the output is an RSS-feed (is_feed() function)
  • if the output is a WordPress administration page (is_admin() function)
  • if the page is requested with ?ao_noptimize=1 appended to the URL
  • if code hooks into Autoptimize to disable optimization (see topic on Visual Composer)
  • if other plugins use the output buffer in an incompatible manner (disable other plugins selectively to identify the culprit)
Visual Composer, Beaver Builder and similar page builder solutions are broken!!

Disable the option to have Autoptimize active for logged on users and go crazy dragging and dropping 😉

Help, my shop checkout/ payment don’t work!!

Disable the option to optimize cart/ checkout pages (works for WooCommerce, Easy Digital Downloads and WP eCommerce).

¡Revolution Slider está roto!

Make sure js/jquery/jquery.js is in the comma-separated list of JS optimization exclusions (this is excluded in the default configuration).

I’m getting «jQuery is not defined» errors

In that case you have un-aggregated JavaScript that requires jQuery to be loaded, so you’ll have to add js/jquery/jquery.js to the comma-separated list of JS optimization exclusions.

I use NextGen Galleries and a lot of JS is not aggregated/ minified?

NextGen Galleries does some nifty stuff to add JavaScript. In order for Autoptimize to be able to aggregate that, you can either disable Nextgen Gallery’s resourced manage with this code snippet add_filter( 'run_ngg_resource_manager', '__return_false' ); or you can tell Autoptimize to initialize earlier, by adding this to your wp-config.php: define("AUTOPTIMIZE_INIT_EARLIER","true");

¿Qué es noptimize?

Starting with version 1.6.6 Autoptimize excludes everything inside noptimize tags, e.g.:
<!--noptimize--><script>alert(‘this will not get autoptimized’);</script><!--/noptimize-->

You can do this in your page/ post content, in widgets and in your theme files (consider creating a child theme to avoid your work being overwritten by theme updates).

Can I change the directory & filename of cached autoptimize files?

Yes, if you want to serve files from e.g. /wp-content/resources/aggregated_12345.css instead of the default /wp-content/cache/autoptimize/autoptimize_12345.css, then add this to wp-config.php:

define('AUTOPTIMIZE_CACHE_CHILD_DIR','/resources/');
define('AUTOPTIMIZE_CACHEFILE_PREFIX','aggregated_');
Can the generated JS/ CSS be pre-gzipped?

Yes, but this is off by default. You can enable this by passing ´true´ to ´autoptimize_filter_cache_create_static_gzip´. You’ll obviously still have to configure your webserver to use these files instead of the non-gzipped ones to avoid the overhead of on-the-fly compression.

¿Qué hace «elimnar los emojis»?

This new option in Autoptimize 2.3 removes the inline CSS, inline JS and linked JS-file added by WordPress core. As such is can have a small positive impact on your site’s performance.

¿Es útil «quitar las cadenas de consulta»?

Although some online performance assessement tools will single out «query strings for static files» as an issue for performance, in general the impact of these is almost non-existant. As such Autoptimize, since version 2.3, allows you to have the query string (or more precisely the «ver»-parameter) removed, but ticking «remove query strings from static resources» will have little or no impact of on your site’s performance as measured in (milli-)seconds.

¿(Cómo) debería optimizar las Google Fonts?

Las Google Fonts se cargan normalmente mediante un archivo CSS enlazado que bloquea la carga. Si tienes un tema y plugins que utilizan Google Fonts, es posible que acabes con varios de estos archivos CSS. Autoptimize (desde la versión 2.3) ahora te permite reducir el impacto de las Google Fonts eliminándolas por completo u optimizando la forma en que se cargan. Hay dos tipos de optimización: la primera es «combinar y enlazar», que reemplaza todas las solicitudes de Google Fonts por una sola solicitud, que seguirá bloqueando la carga, pero permitirá que las fuentes se carguen inmediatamente (lo que significa que no verás que las fuentes cambien mientras se esté cargando la página). La alternativa es «combinar y cargar asíncronamente», lo que utiliza JavaScript para cargar las fuentes de una manera que no bloquee la carga, pero que podría causar un «flash de texto sin estilo».

¿Debería usar la «preconexión»?

Preconnect is a somewhat advanced feature to instruct browsers (if they support it) to make a connection to specific domains even if the connection is not immediately needed. This can be used e.g. to lessen the impact of 3rd party resources on HTTPS (as DNS-request, TCP-connection and SSL/TLS negotiation are executed early). Use with care, as preconnecting to too many domains can be counter-productive.

When can(‘t) I async JS?

JavaScript files that are not autoptimized (because they were excluded or because they are hosted elsewhere) are typically render-blocking. By adding them in the comma-separated «async JS» field, Autoptimize will add the async flag causing the browser to load those files asynchronously (i.e. non-render blocking). This can however break your site (page), e.g. if you async «js/jquery/jquery.js» you will very likely get «jQuery is not defined»-errors. Use with care.

¿Cómo funciona la optimización de imágenes?

Cuando la optimización de imágenes está activada, Autoptimize buscará archivos png, gif, jpeg (.jpg) en las etiquetas de las imágenes y en los archivos CSS que se cargan desde tu propio dominio y cambiará el «src» (origen) al ShortPixel CDN para ellas. Importante: esto solo puede funcionar para imágenes disponibles públicamente, de lo contrario, el proxy de optimización de imágenes no podrá obtener la imagen para optimizarla, por lo que, los corta fuegos, proxies, la protección por contraseña o, incluso, la prevención de enlazado, podrían romper la optimización de las imágenes.

¿Puedo usar la optimización de imágenes para mi intranet/sitio protegido?

No, la optimización de la imagen depende de la capacidad del servicio externo de optimización de imágenes para obtener la imagen original de tu sitio, optimizarla y guardarla en el CDN. Si tus imágenes no pueden ser descargadas por visitantes anónimos (debido a un cortafuegos/proxy/protección por contraseña/protección de enlazado), la optimización de las imágenes no funcionará.

¿Dónde puedo saber más sobre optimización de imágenes?

Echa un vistazo a la FAQ de ShortPixel.

¿Puedo desactivar la escucha de Autoptimize sobre las purgas de la caché de páginas?

As from AO 2.4 AO «listens» to page cache purges to clear its own cache. You can disable this behavior with this filter;

add_filter('autoptimize_filter_main_hookpagecachepurge','__return_false');
¿Por qué no puedo actualizar desde 2.3.4 a 2.4.0 (o superior)?

Main reason (apart from occasional hickups that seem to be inherent to plugin upgrades) is that AO 2.4 requires you to be running PHP 5.3 or higher. And let’s face it; you should actually be running PHP 7.x if you value performance (and security and support), no?

Algunos de los caracteres no ASCII se pierden después de la optimización

By default AO uses non multibyte-safe string methods, but if your PHP has the mbstring extension you can enable multibyte-safe string functions with this filter;

add_filter('autoptimize_filter_main_use_mbstring', '__return_true');
Where can I get help?

You can get help on the wordpress.org support forum. If you are 100% sure this your problem cannot be solved using Autoptimize configuration and that you in fact discovered a bug in the code, you can create an issue on GitHub. If you’re looking for premium support, check out our Autoptimize Pro Support and Web Performance Optimization services.

No quiero seguir usándolo, ¿cómo debería eliminar Autoptimize?
  • Desactivar el plugin (esto eliminará las opciones y la caché)
  • Eliminar el plugin
  • Clear any cache that might still have pages which reference Autoptimized CSS/JS (e.g. of a page caching plugin such as WP Super Cache)
¿Cómo puedo ayudar/ contribuir?

Just fork Autoptimize on Github and code away!

Reseñas

27 de marzo de 2020
Very Easy and works fine! Thank you!
23 de marzo de 2020
We used it for some time than we changed to another plus, same functions. The thing for the one is that this plugin left a cron job once uninstalled (and a DB entry but that is normal). This cron job was causing an infinite loop that overload massively the server's CPU crashing the site on some occasion, after hours and hours of troubleshooting we finally find the issue in the cron... and once deleted all magically went back to normal... for the hours spent to find the issue it deserve a 1, or even zero if possible. For the rest is seems to do the job...
23 de marzo de 2020
Its really an amazing plugin,my site was 18 score on mobile and 48 on desktop, i installed and configured with quick and polite support with in 30 minutes the website reached 93 on desktop and 63 on mobile. If you do not believe you have to install autopmize
23 de marzo de 2020
The support team is excellent! They reply within minutes and solve any issue that you might be facing. The plugin improves the website performance by a great deal!
Leer todas las 1.013 reseñas

Colaboradores y desarrolladores

«Autoptimize» es un software de código abierto. Las siguientes personas han colaborado con este plugin.

Colaboradores

«Autoptimize» ha sido traducido a 26 idiomas locales. Gracias a los traductores por sus contribuciones.

Traduce «Autoptimize» a tu idioma.

¿Interesado en el desarrollo?

Revisa el código , echa un vistazo al repositorio SVN o suscríbete al registro de desarrollo por RSS.

Registro de cambios

2.6.2

  • auto-exclude images from lazyload when they have loading="eager" attribute.
  • bugfix: don’t take querystring into account when deciding as-value for preloaded resources.
  • bugfix; ensure lqip images (used when both image optimization and lazyload are active) always work by normalizing the URL before sending it to shortpixel.
  • minimum WordPress version bumped to 4.4.

2.6.1

  • bugfixes for multiple lazyload bugs causing images not to load or load incorrectly
  • bugfixes for multiple multisite bugs causing settings-screen to be unavailable
  • bugfix re-added 3rd parameter to autoptimize_filter_js_minify_excluded-filter to ensure backwards-compatibility and thus avoid breaking Smart Cookie Kit which expected that 3rd parameter.

2.6.0

  • New: Autoptimize can be configured at network level or at individual site-level when on multisite.
  • Extra: new option to specify what resources need to be preloaded.
  • Extra: add display=swap to Autoptimized (CSS-based) Google Fonts.
  • Images: support for lazyloading of background-images when set in the inline style attribute of a div.
  • Images: updated to lazysizes 5.2.
  • CSS/ JS: no longer add type attributes to Autoptimized resources.
  • Improvement: cache clearing now also integrates with Kinsta, WP-Optimize & Nginx helper.
  • Added «Critical CSS» tab to highlight the criticalcss.com integration, which will be fully included in Autoptimize 2.7.
  • Batch of misc. smaller improvements & fixes, more info in the GitHub commit log.

2.5.1

  • Imágenes: Optimización y carga diferida también para <picture><source>
  • Imágenes: Mejoras misceláneas en la carga diferida
  • Imágenes: Actualizado a LazySizes 5.0.0
  • CSS: Mejoras en la lógica de aplazamiento de los recursos CSS no unificados.
  • Página de ajustes: Mostrar opciones avanzadas de «JS, CSS y HTML» por defecto (muchas personas no veían el botón)

2.5.0

  • moved image optimization to a separate tab and move all code to a separate file.
  • added lazyloading (using lazysizes)
  • added webp support (requires image optimization and lazyloading to be active)
  • added option to enable/ disable the minification of excluded JS/ CSS files (on by default)
  • misc. bugfixes and smaller improvements

2.4.4

  • bugfix: safer way of removing extra cronjobs

2.4.3

  • improved Google Fonts optimzation, praise to @nextendweb (of Smartslider3 fame)!
  • improved deferring of non-aggregated CSS when «inline & defer» is active
  • bugfix: extra ao_cachechecker scheduled jobs & improve scheduling logic
  • bugfix: some extra checks on vars to avoid PHP notices

2.4.2

  • misc. improvements to image optimization logic
  • update PAnD framework to latest version to fix issues with notices not staying dismissed
  • patched JS minifying component to not break template literals as reported by Alex Kozack
  • bugfix for Google fonts subset concatenation by Rocco Aliberti, thanks!
  • bugfix not to remove querystrings if that option is not on in «Extra», kudo’s to Diego Versiani for pointing out the inconsistency
  • tested and confirmed working with WordPress 5.0 (beta 5)

2.4.1

  • bugfix for CSS minifier throwing a HTTP 500 error when a } is missing.
  • bugfix for slowness when iconv was used for multibyte string replacements (ditched iconv).
  • bugfix for occasional issues with broken/ missing strings due to mbstring (also for multibyte string replacement) weirdness.
  • bugfix for wrong sizes in image optimization.
  • bugfix for Google Font subset getting lost in optimization.

2.4.0

  • refactored significantly (no more «classlesses», all is OO), classes are autoloaded, tests added (travis-ci) by zytzagoo who deserves praise for his hard work!
  • new: image optimization (see «Extra»-tab) using Shortpixel’s smart image optimization proxy
  • new: you can now disable JS/ CSS-files being aggregated, having them minified individually instead
  • new: Google Fonts can now be «aggregated & preloaded», this uses CSS which is loaded non render-blocking
  • new: Autoptimize «listens» to page caches being cleared, upon which it purges it’s own cache as well. Support depends on known action hooks firing by the page cache, supported by Hyper Cache, WP Rocket, W3 Total Cache, KeyCDN Cache Enabler, Swift, WP Super Cache, WP Fastest Cache and Comet Cache.
  • new: local JS/ CSS-files that are excluded from optimization are minified by default (can be overridden by filter)
  • improvement: updated minifiers (with very significant improvements for YUI CSS compressor PHP port)
  • improvement: «remove all Google Fonts» is now more careful (avoiding removing entire CSS blocks)
  • misc. under the hood improvements (e.g. more robust cache clearing, better support for multibyte character sets, improved CDN rewrite logic, avoid PHP warnings when writing files to cache, …)

2.3.4

  • bugfix: is_plugin_active causing errors in some cases as reported by @iluminancia and @lozula
  • bugfix: added language domain to 4 __/_e functions, un grand merci à Guillaume Blet!

2.3.3

  • improvement: updated to latest version of Filamentgroup’s loadCSS
  • improvement: by default exclude wp-content/cache and wp-content/uploads from CSS optimization (Divi, Avada & possibly others store page-specific CSS there)
  • bugfix: stop double try/catch-blocks
  • misc. bugfixes (see GitHub commit log)
  • heads-up: this is (supposed to be) the last minor release of the 2.3 branch, 2.4 is a major change with some big under-the-hood and functional changes

2.3.2

  • workaround for stale options-data in external object cache such as Redis, Memcached (core bug) resulting in Autoptimize continuously executing the upgrade-procedure including clearing the cache and trying to preload it with HTTP-requests with «cachebuster» in the query string, thanks to Haroon Q. Raja and Tomas Trkulja for their great assistance!
  • fixes for «undefined index» notices on Extra settings page
  • now removing respective dns-prefetch resource hints when «remove emojis» or when Google Fonts are optimized or removed.
  • changed JS code to load webfont.js deferred instead of asynced to make sure the js-file or fonts are not consider render blocking.

2.3.1

  • fix for issue with update-code in some circumstances, thanks to Rajendra Zore to report & help fix!

2.3.0

  • new: optimize Google fonts with «combine & link» and «combine and load async» (with webload.js), intelligently preconnecting to Google’s domains to limit performance impact even further
  • new: Async JS, can be applied to local or 3rd party JS (if local it will be auto-excluded from autoptimization)
  • new: support to tell browsers to preconnect (= dns lookup + tcp/ip connection + ssl negotiation) to 3rd party domains (depends on browser support, works in Chrome & Firefox)
  • new: remove WordPress’ core’s emoji CSS & JS
  • new: remove (version parameter from) Querystring
  • new: support to clear cache through WP CLI thanks to junaidbhura
  • lots of bugfixes and small improvements done by some seriously smart people via GitHub (thanks all!!), including a fix for AO 2.2 which saw the HTML minifier go PacMan on spaces in some circumstances.

2.2.2

  • roll-back to previous battle-tested version of the CSS minifier
  • tweaks to Autoptimize toolbar menu (visual + timeout of «delete cache» AJAX call)
  • readme update

2.2.1

  • fix for images being referenced in CSS not all being translated to correct path, leading to 404’s as reported by Jeff Inho
  • fix for «[] operator not supported for strings» error in PHP7.1 as reported by falk-wussow.de
  • fix for security hash busting AO’s cache in some cases (esp. in 2.1.1)

2.2.0

  • new: Autoptimize minifies first (caching the individual snippets) and aggregrates the minified snippets, resulting in huge performance improvements for uncached JS/ CSS.
  • new: option to enable/ disable AO for logged in users (on by default)
  • new: option to enable/ disable AO on WooCommerce, Easy Digital Downloads or WP eCommerce cart/ checkout page (on by default)
  • improvement: switched to rel=preload + Filamentgroup’s loadCSS for CSS deferring
  • improvement: switched to YUI CSS minifier PHP-port 2.8.4-p10 (so not to the 3.x branch yet)
  • improvements to the logic of which JS/ CSS can be optimized (getPath function) increasing reliability of the aggregation process
  • security: made placeholder replacement less naive to protect against XSS and LFI vulnerability as reported by Matthew Barry and fixed with great help from Matthew and Tomas Trkulja. Thanks guys!!
  • API: Lots of extra filters, making AO (even) more flexible.
  • Lots of bugfixes and smaller improvements (see GitHub commit log)
  • tested and confirmed working in WordPress 4.8

2.1.2

  • fix for security hash busting AO’s cache in some cases (esp. in 2.1.1)
  • identical to 2.1.0 except for the security fix backported from 2.2.0

2.1.1

  • identical to 2.1.0 except for the security fix backported from 2.2.0

2.1.0

  • new: Autoptimize now appears in admin-toolbar with an easy view on cache size and the possibility to purge the cache (pass false to autoptimize_filter_toolbar_show filter to disable), a big thanks to Pablo Custo for his hard work on this nice feature!
  • new: An extra «More Optimization»-tab is shown (can be hidden with ´autoptimize_filter_show_partner_tabs´-filter) with information about related optimization tools- and services.
  • new: If cache size becomes too big, a mail will be sent to the site admin (pass false to autoptimize_filter_cachecheck_sendmail filter to disable or pass alternative email to the autoptimize_filter_cachecheck_mailto filter to change email-address)
  • new: power-users can enable Autoptimize to pre-gzip the autoptimized files by passing true to autoptimize_filter_cache_create_static_gzip, kudo’s to (Draikin)[https://github.com/Draikin] for this!
  • improvement: admin GUI updated (again; thanks Pablo!) with some responsiveness added in the mix (not showing the right hand column on smaller screen-sizes)
  • improvement: settings-screen now accepts protocol-relative URL for CDN base URL
  • improvement: new (smarter) defaults for JS (don’t force in head + exclude jquery.js) and CSS optimization (include inline CSS)
  • Misc. bugfixes & small improvements (see commit-log on GitHub)
  • Minimal version updated from 2.7 (!) to 4.0
  • Tested and confirmed working on WordPress 4.6

2.0.2

  • bugfix: disallow moving non-aggregated JS by default (can be re-enabled by passing false to the autoptimize_filter_js_unmovable)
  • bugfix: hook autoptimize_action_cachepurged into init to avoid ugly error-message for ZenCache (Comet Cache) users
  • bugfix to allow for Autoptimize to work with PHP 5.2 (although you really should upgrade)

2.0.1

  • Improvement: Autoptimize now also tries to purge WP Engine cache when AO’s cache is cleared
  • Improvement: for AMP pages (which are pretty optimized anyway) Autoptimize will not optimize to avoid issues with e.g. «inline & defer» and with AO adding attributes to link-tags that are not allowed in the subset of HTML that AMP is
  • Improvement: refactored the page cache purging mechanism (removing duplicate code, now nicely hooking into AO’s own autoptimize_action_cachepurged action)
  • Improvement: Re-enable functionality to move non-aggregated JS if «also aggregate inline JS» is active (can be disabled with autoptimize_filter_js_unmovable filter)
  • Improvement: script tags with data-noptimize attribute will be excluded from optimization
  • Bugfix: Better support for renamed wp-content directories
  • Bugfix: Multiple fixes for late-injected CSS/ JS (changes in those files were not always picked up, fonts or background images were not being CDN’ed, …)
  • Misc. other fixes & improvements, go read the commit-log on GitHub if you’re that curious
  • Tested & confirmed working with WordPress 4.5 (beta 3)

2.0.0

  • On average 30% faster minification (more info in this blogpost)!
  • Nuevo: Opción para (des)activar la unificación del JS y CSS incrustado.
  • New: Option to remove Google Fonts.
  • New: Cache-size will be checked daily and a notice will be shown on wp-admin if cache size goes over 512 MB (can be changed by filter).
  • New: Small autoptimized CSS (less then 256 characters, can be changed by filter) will be inlined instead of linked.
  • New in API: filters to declare a JS and CSS whitelist, where only files in that whitelist are autoptimized and all others are left untouched.
  • New in API: filters to declare removable CSS and JS, upon which Autoptimize will simply delete that code (emoji CSS/JS for example, if you prefer not to dequeue them).
  • New in API: filter to move fonts to CDN as well.
  • lots of small and bigger bugfixes, I won’t bother you with a full list but have a look at the commmit log on GitHub.
  • tested and confirmed working with PHP7

older