Version Description
Download this release
Release Info
| Developer | aidvu |
| Plugin | |
| Version | 0.4.3 |
| Comparing to | |
| See all releases | |
Code changes from version 0.4.2 to 0.4.3
- page-optimize.php +5 -2
- readme.txt +7 -1
- service.php +13 -16
page-optimize.php
CHANGED
|
@@ -4,7 +4,7 @@ Plugin Name: Page Optimize
|
|
| 4 |
Plugin URI: https://wordpress.org/plugins/page-optimize/
|
| 5 |
Description: Optimizes JS and CSS for faster page load and render in the browser.
|
| 6 |
Author: Automattic
|
| 7 |
-
Version: 0.4.
|
| 8 |
Author URI: http://automattic.com/
|
| 9 |
*/
|
| 10 |
|
|
@@ -17,6 +17,10 @@ if ( ! defined( 'PAGE_OPTIMIZE_ABSPATH' ) ) {
|
|
| 17 |
define( 'PAGE_OPTIMIZE_ABSPATH', ABSPATH );
|
| 18 |
}
|
| 19 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 20 |
define( 'PAGE_OPTIMIZE_CRON_CACHE_CLEANUP_JOB', 'page_optimize_cron_cache_cleanup' );
|
| 21 |
|
| 22 |
// TODO: Copy tests from nginx-http-concat and/or write them
|
|
@@ -24,7 +28,6 @@ define( 'PAGE_OPTIMIZE_CRON_CACHE_CLEANUP_JOB', 'page_optimize_cron_cache_cleanu
|
|
| 24 |
// TODO: Make concat URL dir configurable
|
| 25 |
if ( isset( $_SERVER['REQUEST_URI'] ) && '/_static/' === substr( $_SERVER['REQUEST_URI'], 0, 9 ) ) {
|
| 26 |
require_once __DIR__ . '/service.php';
|
| 27 |
-
page_optimize_service_request();
|
| 28 |
exit;
|
| 29 |
}
|
| 30 |
|
| 4 |
Plugin URI: https://wordpress.org/plugins/page-optimize/
|
| 5 |
Description: Optimizes JS and CSS for faster page load and render in the browser.
|
| 6 |
Author: Automattic
|
| 7 |
+
Version: 0.4.3
|
| 8 |
Author URI: http://automattic.com/
|
| 9 |
*/
|
| 10 |
|
| 17 |
define( 'PAGE_OPTIMIZE_ABSPATH', ABSPATH );
|
| 18 |
}
|
| 19 |
|
| 20 |
+
if ( ! defined( 'PAGE_OPTIMIZE_CSS_MINIFY' ) ) {
|
| 21 |
+
define( 'PAGE_OPTIMIZE_CSS_MINIFY', false );
|
| 22 |
+
}
|
| 23 |
+
|
| 24 |
define( 'PAGE_OPTIMIZE_CRON_CACHE_CLEANUP_JOB', 'page_optimize_cron_cache_cleanup' );
|
| 25 |
|
| 26 |
// TODO: Copy tests from nginx-http-concat and/or write them
|
| 28 |
// TODO: Make concat URL dir configurable
|
| 29 |
if ( isset( $_SERVER['REQUEST_URI'] ) && '/_static/' === substr( $_SERVER['REQUEST_URI'], 0, 9 ) ) {
|
| 30 |
require_once __DIR__ . '/service.php';
|
|
|
|
| 31 |
exit;
|
| 32 |
}
|
| 33 |
|
readme.txt
CHANGED
|
@@ -4,7 +4,7 @@ Tags: performance
|
|
| 4 |
Requires at least: 5.3
|
| 5 |
Tested up to: 5.3
|
| 6 |
Requires PHP: 7.2
|
| 7 |
-
Stable tag: 0.4.
|
| 8 |
License: GPLv2 or later
|
| 9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
| 10 |
|
|
@@ -33,6 +33,12 @@ To change the cache location, set this constant to the absolute filesystem path
|
|
| 33 |
|
| 34 |
To disable caching, set this constant to `false`. Please note that disabling Page Optimize caching may negatively impact performance unless you are caching elsewhere.
|
| 35 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
== Testing ==
|
| 37 |
|
| 38 |
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`.
|
| 4 |
Requires at least: 5.3
|
| 5 |
Tested up to: 5.3
|
| 6 |
Requires PHP: 7.2
|
| 7 |
+
Stable tag: 0.4.3
|
| 8 |
License: GPLv2 or later
|
| 9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
| 10 |
|
| 33 |
|
| 34 |
To disable caching, set this constant to `false`. Please note that disabling Page Optimize caching may negatively impact performance unless you are caching elsewhere.
|
| 35 |
|
| 36 |
+
= PAGE_OPTIMIZE_CSS_MINIFY =
|
| 37 |
+
|
| 38 |
+
Page Optimize has CSS Minification capabilities which are off by default.
|
| 39 |
+
|
| 40 |
+
If you're using caching, and not minifying CSS elsewhere, it is recommended to enable it by setting it to `true`.
|
| 41 |
+
|
| 42 |
== Testing ==
|
| 43 |
|
| 44 |
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`.
|
service.php
CHANGED
|
@@ -5,9 +5,6 @@ $page_optimize_types = array(
|
|
| 5 |
'js' => 'application/javascript'
|
| 6 |
);
|
| 7 |
|
| 8 |
-
// TODO: Provide a settings button to clear the cache
|
| 9 |
-
// TODO: Should we provide a default at all? Is this a reasonable default?
|
| 10 |
-
|
| 11 |
function page_optimize_service_request() {
|
| 12 |
$use_cache = defined( 'PAGE_OPTIMIZE_CACHE_DIR' ) && ! empty( PAGE_OPTIMIZE_CACHE_DIR );
|
| 13 |
if ( $use_cache && ! is_dir( PAGE_OPTIMIZE_CACHE_DIR ) && ! mkdir( PAGE_OPTIMIZE_CACHE_DIR, 0775, true ) ) {
|
|
@@ -51,14 +48,11 @@ function page_optimize_service_request() {
|
|
| 51 |
|
| 52 |
$etag = '"' . md5( file_get_contents( $cache_file ) ) . '"';
|
| 53 |
|
| 54 |
-
ob_start( 'ob_gzhandler' );
|
| 55 |
header( 'X-Page-Optimize: cached' );
|
| 56 |
header( 'Cache-Control: max-age=' . 31536000 );
|
| 57 |
header( 'ETag: ' . $etag );
|
| 58 |
|
| 59 |
echo file_get_contents( $cache_file ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- We need to trust this unfortunately.
|
| 60 |
-
$output = ob_get_clean();
|
| 61 |
-
echo $output; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- We need to trust this unfortunately.
|
| 62 |
die();
|
| 63 |
}
|
| 64 |
}
|
|
@@ -86,7 +80,6 @@ function page_optimize_service_request() {
|
|
| 86 |
|
| 87 |
function page_optimize_build_output() {
|
| 88 |
global $page_optimize_types;
|
| 89 |
-
ob_start( 'ob_gzhandler' );
|
| 90 |
|
| 91 |
require_once __DIR__ . '/cssmin/cssmin.php';
|
| 92 |
|
|
@@ -152,7 +145,11 @@ function page_optimize_build_output() {
|
|
| 152 |
$pre_output = '';
|
| 153 |
$output = '';
|
| 154 |
|
| 155 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
| 156 |
|
| 157 |
foreach ( $args as $uri ) {
|
| 158 |
$fullpath = page_optimize_get_path( $uri );
|
|
@@ -243,7 +240,9 @@ function page_optimize_build_output() {
|
|
| 243 |
);
|
| 244 |
}
|
| 245 |
|
| 246 |
-
|
|
|
|
|
|
|
| 247 |
}
|
| 248 |
|
| 249 |
if ( $page_optimize_types['js'] === $mime_type ) {
|
|
@@ -259,11 +258,9 @@ function page_optimize_build_output() {
|
|
| 259 |
"Content-Type: $mime_type",
|
| 260 |
);
|
| 261 |
|
| 262 |
-
echo $pre_output . $output;
|
| 263 |
-
|
| 264 |
return array(
|
| 265 |
'headers' => $headers,
|
| 266 |
-
'content' =>
|
| 267 |
);
|
| 268 |
}
|
| 269 |
|
|
@@ -308,11 +305,9 @@ function page_optimize_get_path( $uri ) {
|
|
| 308 |
}
|
| 309 |
|
| 310 |
if ( defined( 'PAGE_OPTIMIZE_CONCAT_BASE_DIR' ) ) {
|
| 311 |
-
|
| 312 |
-
$path = realpath( PAGE_OPTIMIZE_CONCAT_BASE_DIR . "/$uri" );
|
| 313 |
-
}
|
| 314 |
|
| 315 |
-
if (
|
| 316 |
$path = realpath( PAGE_OPTIMIZE_ABSPATH . "/$uri" );
|
| 317 |
}
|
| 318 |
} else {
|
|
@@ -329,3 +324,5 @@ function page_optimize_get_path( $uri ) {
|
|
| 329 |
|
| 330 |
return $path;
|
| 331 |
}
|
|
|
|
|
|
| 5 |
'js' => 'application/javascript'
|
| 6 |
);
|
| 7 |
|
|
|
|
|
|
|
|
|
|
| 8 |
function page_optimize_service_request() {
|
| 9 |
$use_cache = defined( 'PAGE_OPTIMIZE_CACHE_DIR' ) && ! empty( PAGE_OPTIMIZE_CACHE_DIR );
|
| 10 |
if ( $use_cache && ! is_dir( PAGE_OPTIMIZE_CACHE_DIR ) && ! mkdir( PAGE_OPTIMIZE_CACHE_DIR, 0775, true ) ) {
|
| 48 |
|
| 49 |
$etag = '"' . md5( file_get_contents( $cache_file ) ) . '"';
|
| 50 |
|
|
|
|
| 51 |
header( 'X-Page-Optimize: cached' );
|
| 52 |
header( 'Cache-Control: max-age=' . 31536000 );
|
| 53 |
header( 'ETag: ' . $etag );
|
| 54 |
|
| 55 |
echo file_get_contents( $cache_file ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- We need to trust this unfortunately.
|
|
|
|
|
|
|
| 56 |
die();
|
| 57 |
}
|
| 58 |
}
|
| 80 |
|
| 81 |
function page_optimize_build_output() {
|
| 82 |
global $page_optimize_types;
|
|
|
|
| 83 |
|
| 84 |
require_once __DIR__ . '/cssmin/cssmin.php';
|
| 85 |
|
| 145 |
$pre_output = '';
|
| 146 |
$output = '';
|
| 147 |
|
| 148 |
+
$should_minify_css = defined( 'PAGE_OPTIMIZE_CSS_MINIFY' ) && ! empty( PAGE_OPTIMIZE_CSS_MINIFY );
|
| 149 |
+
|
| 150 |
+
if ( $should_minify_css ) {
|
| 151 |
+
$css_minify = new tubalmartin\CssMin\Minifier;
|
| 152 |
+
}
|
| 153 |
|
| 154 |
foreach ( $args as $uri ) {
|
| 155 |
$fullpath = page_optimize_get_path( $uri );
|
| 240 |
);
|
| 241 |
}
|
| 242 |
|
| 243 |
+
if ( $should_minify_css ) {
|
| 244 |
+
$buf = $css_minify->run( $buf );
|
| 245 |
+
}
|
| 246 |
}
|
| 247 |
|
| 248 |
if ( $page_optimize_types['js'] === $mime_type ) {
|
| 258 |
"Content-Type: $mime_type",
|
| 259 |
);
|
| 260 |
|
|
|
|
|
|
|
| 261 |
return array(
|
| 262 |
'headers' => $headers,
|
| 263 |
+
'content' => $pre_output . $output,
|
| 264 |
);
|
| 265 |
}
|
| 266 |
|
| 305 |
}
|
| 306 |
|
| 307 |
if ( defined( 'PAGE_OPTIMIZE_CONCAT_BASE_DIR' ) ) {
|
| 308 |
+
$path = realpath( PAGE_OPTIMIZE_CONCAT_BASE_DIR . "/$uri" );
|
|
|
|
|
|
|
| 309 |
|
| 310 |
+
if ( false === $path ) {
|
| 311 |
$path = realpath( PAGE_OPTIMIZE_ABSPATH . "/$uri" );
|
| 312 |
}
|
| 313 |
} else {
|
| 324 |
|
| 325 |
return $path;
|
| 326 |
}
|
| 327 |
+
|
| 328 |
+
page_optimize_service_request();
|
