Оптимизация кода на PHP

В процессе сжатия все комментарии к коду, переносы строк, лишние символы табуляции и пробельные символы удаляются. Это позволяет сэкономить 10…20% от оригинального размера файла.

Оптимизация HTML происходит следующим образом:

<?php
function sanitize_output($buffer) {
 $search = array( '/\>[^\S ]+/s', '/[^\S ]+\</s', '/(\s)+/s' );
 $replace = array( '>', '<', '\\1' );
 $buffer = preg_replace( $search, $replace, $buffer );
 return $buffer;
 }
 ob_start("sanitize_output");
?>
<html>
...
</html>
<?php
ob_end_flush(  ); 
?>

Оптимизация CSS кода:

function compressCss( $buffer ) {
 // Remove comments
 $buffer = preg_replace( '!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer );
 // Remone Other 
 $buffer = str_replace( 
  array( "; }", ";}", ": ", "\r\n", "\r", "\n", "\t", '  ', '   ', '    ',  '     ' ),
  array( '}', '}', ':', '',  '',  '',  '',  '',  '',  '',   '' ),
 $buffer );
 // Remove other spaces before/after
 $buffer = preg_replace( array( '(( )+\))', '(\)( )+)'), ')', $buffer );
 return '<style type="text/css">'.$buffer.'</style>';
 }

Оптимизация JS кода:

function compressJs( $buffer ) {
 // Remove comments
 $buffer = preg_replace( '/(?:(?:\/\*(?:[^*]|(?:\*+[^*\/]))*\*+\/)|(?:(?<!\:|\\\|\'|\")\/\/.*))/', '', $buffer );
 // Remove Other
 $buffer = str_replace( 
  array( ": ", " =", "= ", "\r\n", "\r", "\n", "\t", '  ', '   ', '    ',  '     ' ),
  array( ':', '=', '=', '',  '',  '',  '',  '',  '',  '',   '' ),
 $buffer );
 // Remove other spaces before/after
 $buffer = preg_replace( array( '(( )+\))', '(\)( )+)'), ')', $buffer );
 return '<script type="text/javascript">'.$buffer.'</script>';
 }

Соответственно выполняем подключение:

<!-- Style -->
<?php ob_start( "compressCss" ); echo '<style type="text/css">'; include( $_SERVER['DOCUMENT_ROOT'].'/style.css' ); echo '</style>'; ob_end_flush(  ); ?>
<!-- Jquery -->
<?php ob_start( "compressJs" ); echo '<script type="text/javascript">'; include( $_SERVER['DOCUMENT_ROOT'].'/jquery.js' ); echo '</script>'; ob_end_flush(  ); ?>
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *