=== Page Optimize === Contributors: aidvu, bjorsch, bpayton, mreishus, rcrdortiz Tags: performance Requires at least: 5.3 Tested up to: 6.9 Requires PHP: 7.4 Stable tag: 0.6.2 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Optimize pages for faster load and render in the browser. == Description == This plugin supports a few features that may improve the performance of page loading and rendering in the browser: * Concatenate CSS * Concatenate JavaScript * Execution timing of non-critical scripts * Note: Changing script execution timing can be risky and will not work well for all sites. == Installation == This plugin uses sensible defaults so it can operate without configuration, but there are a number of constants you may use for a custom configuration. = PAGE_OPTIMIZE_CACHE_DIR = Page Optimize caches concatenated scripts and styles by default, and this constant controls where the cache files are stored. The default directory is `cache/page_optimize` under your site's `wp-content` folder. To change the cache location, set this constant to the absolute filesystem path of that location. To disable caching, set this constant to `false`. Please note that disabling Page Optimize caching may negatively impact performance unless you are caching elsewhere. = PAGE_OPTIMIZE_CSS_MINIFY = Page Optimize has CSS Minification capabilities which are off by default. If you're using caching, and not minifying CSS elsewhere, it is recommended to enable it by setting it to `true`. == Testing == To test features without enabling them for the entire site, you may append query params to a WordPress post or page URL. For example, to test enabling JavaScript concatenation for `https://example.com/blog/`, you can use the URL `https://example.com/blog/?concat-js=1`. Supported query params: * `concat-css` controls CSS concatenation. Values: `1` for ON and `0` for OFF. * `concat-js` controls JavaScript concatenation. Values: `1` for ON and `0` for OFF. * `load-mode-js` controls how non-critical JavaScript are loaded. Values: 'defer' for [deferred](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script#attr-defer), 'async' for [async loading](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script#attr-async), any other value indicates the feature should be disabled. = PHPUnit (Docker) = You can run the PHPUnit tests locally using Docker (no local MySQL required). First time (or after changing DB credentials): `docker compose down -v` Run tests: `docker compose up --build --abort-on-container-exit --exit-code-from tests` Optional overrides (examples): * `WP_VERSION=6.5 docker compose up --build --abort-on-container-exit --exit-code-from tests` * `PHP_VERSION=7.4 docker compose up --build --abort-on-container-exit --exit-code-from tests` * `PHPUNIT_VERSION=9.6.20 docker compose up --build --abort-on-container-exit --exit-code-from tests` == Changelog == = 0.6.2 = * Fix: Harden CSS concat `@import` hoisting to preserve long Google Fonts-style URLs with semicolons and avoid false positives from `@import`-like substrings in rule bodies/URL paths. = 0.6.1 = * Fix: Skip JavaScript concatenation for scripts that request defer or async loading to preserve core loading behavior. * Fix: Skip JavaScript concatenation for module scripts (type="module") and scripts whose