mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-06-28 14:20:15 +00:00
Split the script queue in head and footer part, concatenate and compress the default js and css, first run, see #8628
git-svn-id: https://develop.svn.wordpress.org/trunk@10357 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -63,6 +63,18 @@ case 'ajax-tag-search' :
|
||||
echo join( $results, "\n" );
|
||||
die;
|
||||
break;
|
||||
case 'wp-compression-test' :
|
||||
if ( !current_user_can( 'manage_options' ) )
|
||||
die('-1');
|
||||
|
||||
if ( isset($_GET['tested']) ) {
|
||||
if ( 1 == $_GET['tested'] )
|
||||
update_option('can_compress_scripts', 1);
|
||||
elseif ( 0 == $_GET['tested'] )
|
||||
update_option('can_compress_scripts', 0);
|
||||
}
|
||||
die('0');
|
||||
break;
|
||||
default :
|
||||
do_action( 'wp_ajax_' . $_GET['action'] );
|
||||
die('0');
|
||||
|
||||
@@ -22,7 +22,14 @@ echo '<span id="footer-thankyou">' . __('Thank you for creating with <a href="ht
|
||||
<p id="footer-upgrade" class="alignright"><?php echo $upgrade; ?></p>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<?php do_action('admin_footer', ''); ?>
|
||||
<?php
|
||||
do_action('admin_footer', '');
|
||||
do_action('admin_print_footer_scripts');
|
||||
|
||||
if ( false === get_option('can_compress_scripts') )
|
||||
compression_test();
|
||||
?>
|
||||
<script type="text/javascript">if(typeof wpOnload=='function')wpOnload();</script>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
||||
|
||||
@@ -3387,4 +3387,37 @@ function screen_icon($name = '') {
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Test support for compressed JavaScript and CSS
|
||||
*
|
||||
* Outputs JavaScript that tests if compression from PHP works as expected
|
||||
* and sets an option with the result. Has no effect when the current user
|
||||
* is not an administrator. To run the test again the option 'can_compress_scripts'
|
||||
* has to be deleted.
|
||||
*
|
||||
* @since 2.8.0
|
||||
*/
|
||||
function compression_test() {
|
||||
?>
|
||||
<script type="text/javascript" src="load-scripts.php?test=1"></script>
|
||||
<script type="text/javascript">
|
||||
/* <![CDATA[ */
|
||||
(function() {
|
||||
var x, test = typeof wpCompressionTest == 'undefined' ? 0 : 1;
|
||||
if ( window.XMLHttpRequest ) {
|
||||
x = new XMLHttpRequest();
|
||||
} else {
|
||||
try{x=new ActiveXObject('Msxml2.XMLHTTP');}catch(e){try{x=new ActiveXObject('Microsoft.XMLHTTP');}catch(e){};}
|
||||
}
|
||||
|
||||
if (x) {
|
||||
x.open('GET', 'admin-ajax.php?action=wp-compression-test&tested='+test+'&'+(new Date()).getTime(), true);
|
||||
x.send('');
|
||||
}
|
||||
})();
|
||||
/* ]]> */
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
160
wp-admin/load-scripts.php
Normal file
160
wp-admin/load-scripts.php
Normal file
@@ -0,0 +1,160 @@
|
||||
<?php
|
||||
|
||||
/** Set ABSPATH for execution */
|
||||
define( 'ABSPATH', dirname(dirname(__FILE__)) );
|
||||
define( 'WPINC', '/wp-includes' );
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function __() {}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function _c() {}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function add_filter() {}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function attribute_escape() {}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function apply_filters() {}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function get_option() {}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function is_lighttpd_before_150() {}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function add_action() {}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function do_action_ref_array() {}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function get_bloginfo() {}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function is_admin() {return true;}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function site_url() {}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function admin_url() {}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function wp_guess_url() {}
|
||||
|
||||
function get_file($path) {
|
||||
|
||||
if ( function_exists('realpath') )
|
||||
$path = realpath($path);
|
||||
|
||||
if ( ! $path || ! @is_file($path) )
|
||||
return '';
|
||||
|
||||
return @file_get_contents($path);
|
||||
}
|
||||
|
||||
if ( isset($_GET['test']) && 1 == $_GET['test'] ) {
|
||||
if ( ini_get('zlib.output_compression') )
|
||||
exit('');
|
||||
|
||||
$out = 'var wpCompressionTest = 1;';
|
||||
|
||||
$compressed = false;
|
||||
if ( false !== strpos( strtolower($_SERVER['HTTP_ACCEPT_ENCODING']), 'deflate') && function_exists('gzdeflate') ) {
|
||||
header('Content-Encoding: deflate');
|
||||
$out = gzdeflate( $out, 3 );
|
||||
$compressed = true;
|
||||
} elseif ( false !== strpos( strtolower($_SERVER['HTTP_ACCEPT_ENCODING']), 'gzip') && function_exists('gzencode') ) {
|
||||
header('Content-Encoding: gzip');
|
||||
$out = gzencode( $out, 3 );
|
||||
$compressed = true;
|
||||
}
|
||||
|
||||
if ( ! $compressed )
|
||||
exit('');
|
||||
|
||||
header( 'Expires: Wed, 11 Jan 1984 05:00:00 GMT' );
|
||||
header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
|
||||
header( 'Cache-Control: no-cache, must-revalidate, max-age=0' );
|
||||
header( 'Pragma: no-cache' );
|
||||
header( 'Content-Type: application/x-javascript; charset=UTF-8' );
|
||||
echo $out;
|
||||
exit;
|
||||
}
|
||||
|
||||
$load = preg_replace( '/[^a-z0-9,_-]*/i', '', $_GET['load'] );
|
||||
$load = explode(',', $load);
|
||||
|
||||
if ( empty($load) )
|
||||
exit;
|
||||
|
||||
require(ABSPATH . '/wp-includes/script-loader.php');
|
||||
require(ABSPATH . '/wp-includes/version.php');
|
||||
|
||||
// Discard any buffers
|
||||
while ( @ob_end_clean() );
|
||||
|
||||
$compress = ( isset($_GET['c']) && 1 == $_GET['c'] );
|
||||
$expires_offset = 31536000;
|
||||
$out = '';
|
||||
|
||||
$wp_scripts = new WP_Scripts();
|
||||
wp_default_scripts($wp_scripts);
|
||||
|
||||
foreach( $load as $handle ) {
|
||||
if ( !array_key_exists($handle, $wp_scripts->registered) )
|
||||
continue;
|
||||
|
||||
$path = ABSPATH . $wp_scripts->registered[$handle]->src;
|
||||
$out .= get_file($path) . "\n";
|
||||
}
|
||||
|
||||
header('Content-Type: application/x-javascript; charset=UTF-8');
|
||||
header('Vary: Accept-Encoding'); // Handle proxies
|
||||
header('Expires: ' . gmdate( "D, d M Y H:i:s", time() + $expires_offset ) . ' GMT');
|
||||
header("Cache-Control: public, max-age=$expires_offset");
|
||||
|
||||
if ( $compress && ! ini_get('zlib.output_compression') ) {
|
||||
if ( false !== strpos( strtolower($_SERVER['HTTP_ACCEPT_ENCODING']), 'deflate') && function_exists('gzdeflate') ) {
|
||||
header('Content-Encoding: deflate');
|
||||
$out = gzdeflate( $out, 3 );
|
||||
} elseif ( false !== strpos( strtolower($_SERVER['HTTP_ACCEPT_ENCODING']), 'gzip') && function_exists('gzencode') ) {
|
||||
header('Content-Encoding: gzip');
|
||||
$out = gzencode( $out, 3 );
|
||||
}
|
||||
}
|
||||
|
||||
echo $out;
|
||||
exit;
|
||||
141
wp-admin/load-styles.php
Normal file
141
wp-admin/load-styles.php
Normal file
@@ -0,0 +1,141 @@
|
||||
<?php
|
||||
|
||||
/** Set ABSPATH for execution */
|
||||
define( 'ABSPATH', dirname(dirname(__FILE__)) );
|
||||
define( 'WPINC', '/wp-includes' );
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function __() {}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function _c() {}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function add_filter() {}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function attribute_escape() {}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function apply_filters() {}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function get_option() {}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function is_lighttpd_before_150() {}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function add_action() {}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function do_action_ref_array() {}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function get_bloginfo() {}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function is_admin() {return true;}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function site_url() {}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function admin_url() {}
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
function wp_guess_url() {}
|
||||
|
||||
function get_file($path) {
|
||||
|
||||
if ( function_exists('realpath') )
|
||||
$path = realpath($path);
|
||||
|
||||
if ( ! $path || ! @is_file($path) )
|
||||
return '';
|
||||
|
||||
return @file_get_contents($path);
|
||||
}
|
||||
|
||||
require(ABSPATH . '/wp-includes/script-loader.php');
|
||||
require(ABSPATH . '/wp-includes/version.php');
|
||||
|
||||
// Discard any buffers
|
||||
while ( @ob_end_clean() );
|
||||
|
||||
$load = preg_replace( '/[^a-z0-9,_-]*/i', '', $_GET['load'] );
|
||||
$load = explode(',', $load);
|
||||
|
||||
if ( empty($load) )
|
||||
exit;
|
||||
|
||||
$compress = ( isset($_GET['c']) && 1 == $_GET['c'] );
|
||||
$rtl = ( isset($_GET['rtl']) && 1 == $_GET['rtl'] );
|
||||
$expires_offset = 31536000;
|
||||
$out = '';
|
||||
|
||||
$wp_styles = new WP_Styles();
|
||||
wp_default_styles($wp_styles);
|
||||
|
||||
foreach( $load as $handle ) {
|
||||
if ( !array_key_exists($handle, $wp_styles->registered) )
|
||||
continue;
|
||||
|
||||
$style = $wp_styles->registered[$handle];
|
||||
$path = ABSPATH . $style->src;
|
||||
|
||||
$content = get_file($path) . "\n";
|
||||
|
||||
if ( $rtl && isset($style->extra['rtl']) && $style->extra['rtl'] ) {
|
||||
$rtl_path = is_bool($style->extra['rtl']) ? str_replace( '.css', '-rtl.css', $path ) : ABSPATH . $style->extra['rtl'];
|
||||
$content .= get_file($rtl_path) . "\n";
|
||||
}
|
||||
|
||||
$out .= str_replace( '../images/', 'images/', $content );
|
||||
}
|
||||
|
||||
header('Content-Type: text/css');
|
||||
header('Vary: Accept-Encoding'); // Handle proxies
|
||||
header('Expires: ' . gmdate( "D, d M Y H:i:s", time() + $expires_offset ) . ' GMT');
|
||||
header("Cache-Control: public, max-age=$expires_offset");
|
||||
|
||||
if ( $compress && ! ini_get('zlib.output_compression') ) {
|
||||
if ( false !== strpos( strtolower($_SERVER['HTTP_ACCEPT_ENCODING']), 'deflate') && function_exists('gzdeflate') ) {
|
||||
header('Content-Encoding: deflate');
|
||||
$out = gzdeflate( $out, 3 );
|
||||
} elseif ( false !== strpos( strtolower($_SERVER['HTTP_ACCEPT_ENCODING']), 'gzip') && function_exists('gzencode') ) {
|
||||
header('Content-Encoding: gzip');
|
||||
$out = gzencode( $out, 3 );
|
||||
}
|
||||
}
|
||||
|
||||
echo $out;
|
||||
exit;
|
||||
Reference in New Issue
Block a user