Module Description
Summary Note: AdvAgg needs a major rework for Drupal 10.1 - recommend holding update or disabling AdvAgg until a new release comes out. AdvAgg allows you to improve the frontend performance of your site. Be sure to do a before and after comparison by using Google's PageSpeed Insights and WebPagetest.org. The performance benefits are achieved by using some of the features found in AdvAgg and its sub modules. Out of the box AdvAgg's frontend performance will be similar to cores.
Features & benefits
* Stability - If the Aggregate doesn't exist it will be generated on demand.
* Stability - Stampede file protection. Uses locking so multiple requests for the same thing will result in only one thread doing the work.
* Backend - Render Cache; cache the generated HTML.
* Backend - Zero file I/O if the Aggregated file already exists. Big improvement if using a networked filesystems (NFS, S3, etc).
* Frontend - Combine CSS files by using media queries; better CSS groupings.
* Frontend - DNS Prefetch. Start DNS lookup for external domains as soon as possible.
* Frontend - Workaround IE 6-9 CSS limitation by preventing more than 4095 selectors in a CSS file.
* Frontend - Brotli/Gzip support. Compress files into a .gz/.br file and serve from Apache. This is faster then compressing the file on each request.
* DX - Browser conditional comments for CSS and JS.
* DX - All attributes are supported.
* DX - D8 Features backported when feasible.
* DX - Add JS to any region of the theme; also to any view or block.
* DX - Admin can drop a cookie that will turn off file aggregation (theme development).
* DX - Url query string to turn off aggregation for that request. ?advagg=0 will turn off file aggregation if the user has the "bypass advanced aggregation" permission. ?advagg=-1 will completely bypass all of Advanced CSS/JS Aggregations modules and submodules.
Submodules
* Frontend - Async Font Loader. Text is readable before the webfont has been downloaded; usable site quicker.
* Frontend - Bundler Submodule. Given a target number of CSS/JS aggregates, this will try very hard to meet that goal. It smartly groups files together.
* Frontend - CSS/JS Compress Submodules. Can minifiy files & inline CSS/JS. Can also turn off core CSS compression for theme development.
* Frontend - Modifier Submodule. Has various tweaks packaged up. Force preprocessing for all CSS/JS; move JS to footer; add defer tag to all JS (Fix render-blocking JS); Inline all CSS/JS for given paths; remove unused JavaScript tags if possible; Use JS to load CSS asynchronously (Fix render-blocking CSS); the use of a shared directory for a unified multisite.
* Frontend - Relocate Submodule. Will move external CSS and JS files to be local. Allows for long browser caches, and faster page rendering.
* Security - Subresource Integrity. Provides a hash of the CSS/JS file allowing for assets delivered over a CDN to be verified.
* DX - CSS/JS Validator Submodule. Validate all CSS files using jigsaw.w3.org. Check all CSS files with CSSLint. Check all JS files with JSHint
Notes (4.2+) require tubalmartin/cssmin: ^4.1
Notes (7.x) HTTP Parallel Request & Threading Library is not required but is recommended so Aggregates will be built in the background.
3rd Party Modules (7.x)
AdvAgg Search & Replace CSS Delivery Optimizer
Similar Modules (7.x)
List of modules in D7 that might provide similar functionality. https://www.drupal.org/project/core_library https://www.drupal.org/project/agrcache https://www.drupal.org/project/blackwhite https://www.drupal.org/project/bundle_aggregation https://www.drupal.org/project/magic https://www.drupal.org/project/uglifyjs https://www.drupal.org/project/speedy https://www.drupal.org/project/simple_aggregation https://www.drupal.org/sandbox/alanmackenzie/2135127 (Role CSS & JS Aggregation) https://www.drupal.org/project/css_js_total_control https://www.drupal.org/project/minify https://www.drupal.org/sandbox/joel/2121797 (Prefetch) https://www.drupal.org/project/color_rebuilder
Features & benefits
* Stability - If the Aggregate doesn't exist it will be generated on demand.
* Stability - Stampede file protection. Uses locking so multiple requests for the same thing will result in only one thread doing the work.
* Backend - Render Cache; cache the generated HTML.
* Backend - Zero file I/O if the Aggregated file already exists. Big improvement if using a networked filesystems (NFS, S3, etc).
* Frontend - Combine CSS files by using media queries; better CSS groupings.
* Frontend - DNS Prefetch. Start DNS lookup for external domains as soon as possible.
* Frontend - Workaround IE 6-9 CSS limitation by preventing more than 4095 selectors in a CSS file.
* Frontend - Brotli/Gzip support. Compress files into a .gz/.br file and serve from Apache. This is faster then compressing the file on each request.
* DX - Browser conditional comments for CSS and JS.
* DX - All attributes are supported.
* DX - D8 Features backported when feasible.
* DX - Add JS to any region of the theme; also to any view or block.
* DX - Admin can drop a cookie that will turn off file aggregation (theme development).
* DX - Url query string to turn off aggregation for that request. ?advagg=0 will turn off file aggregation if the user has the "bypass advanced aggregation" permission. ?advagg=-1 will completely bypass all of Advanced CSS/JS Aggregations modules and submodules.
Submodules
* Frontend - Async Font Loader. Text is readable before the webfont has been downloaded; usable site quicker.
* Frontend - Bundler Submodule. Given a target number of CSS/JS aggregates, this will try very hard to meet that goal. It smartly groups files together.
* Frontend - CSS/JS Compress Submodules. Can minifiy files & inline CSS/JS. Can also turn off core CSS compression for theme development.
* Frontend - Modifier Submodule. Has various tweaks packaged up. Force preprocessing for all CSS/JS; move JS to footer; add defer tag to all JS (Fix render-blocking JS); Inline all CSS/JS for given paths; remove unused JavaScript tags if possible; Use JS to load CSS asynchronously (Fix render-blocking CSS); the use of a shared directory for a unified multisite.
* Frontend - Relocate Submodule. Will move external CSS and JS files to be local. Allows for long browser caches, and faster page rendering.
* Security - Subresource Integrity. Provides a hash of the CSS/JS file allowing for assets delivered over a CDN to be verified.
* DX - CSS/JS Validator Submodule. Validate all CSS files using jigsaw.w3.org. Check all CSS files with CSSLint. Check all JS files with JSHint
Notes (4.2+) require tubalmartin/cssmin: ^4.1
Notes (7.x) HTTP Parallel Request & Threading Library is not required but is recommended so Aggregates will be built in the background.
3rd Party Modules (7.x)
AdvAgg Search & Replace CSS Delivery Optimizer
Similar Modules (7.x)
List of modules in D7 that might provide similar functionality. https://www.drupal.org/project/core_library https://www.drupal.org/project/agrcache https://www.drupal.org/project/blackwhite https://www.drupal.org/project/bundle_aggregation https://www.drupal.org/project/magic https://www.drupal.org/project/uglifyjs https://www.drupal.org/project/speedy https://www.drupal.org/project/simple_aggregation https://www.drupal.org/sandbox/alanmackenzie/2135127 (Role CSS & JS Aggregation) https://www.drupal.org/project/css_js_total_control https://www.drupal.org/project/minify https://www.drupal.org/sandbox/joel/2121797 (Prefetch) https://www.drupal.org/project/color_rebuilder
Module Link
Project Usage
54448
Security Covered
Covered By Security Advisory
Version Available
Production
Module Summary
AdvAgg aims to improve frontend performance of Drupal websites by aggregating CSS and JS files, providing stability, backend caching, frontend optimizations, and developer experience enhancements.
Data Name
advagg