GZIP & HTML Compress – WordPress Plugin

Compress, Compressor HTML, CSS, PHP, JavaScript

Kompresja kodu HTML, CSS, PHP, JavaScript polega na usunięciu z niego zbędnych znaków takich jak:

  • Tabulatory – TAB – 0×09 (\t, \x09)
  • Tabulator Pionowy – vertical tab – 0×0B (\x0B)
  • Znak nowej linii – 0×0A (\n, \x0A)
  • Znak powrotu karetki – 0×0D (\r, \x0D)
  • Puste znaki – 0×00 (\0, \x00)
  • Każdą podwójną spację (i więcej np. 3, 4 i tak dalej) 0×20 0×20 – (\x20\x20)
  • Każdą pojedynczą spację, lecz tylko w wybranych i dozwolonych miejscach (zmienna $char_css )
  • Wszystkie komentarze
  • Skraca kolory o ile to możliwe w zapisie HEX z np. z #aaffaa na #afa
  • Usuwa średnik z ostatniej reguły, ponieważ jest zbędny

Oczywiście w tym wszystkim należy pominąć tagi html takie jak: <pre>|<textarea>|<blockcode>.

Niektórych skryptów JavaScript nie można w ogóle kompresować !

Compressor CSS

if(isset($_POST[‘css_code’]) && isset($_POST[‘css_submit’])) {
function compress_css($css_code) {
/*********************
//
//Compress CSS by tosiek – https://tosiek.pl/
//
*********************/
//Special CSS characters after and before the spaces are removed
//do not use ‘)’ !!! – this causes a bug in Internet Explorer
$char_css='{|}|(|;|:|,|\’|”‘;
//pattern to shortening hex colour
$hex_char='[a-f0-9]’;
//
// Arrays
//
//array with pattern
$pattern=array(
//new lines(\n and \r)
“/\x0A/”,”/\x0D/”,
//vertical tab and tab
“/\x0B/”,”/\x09{1,}/”,
//NULL bytes (\0)
“/\\x00/”,
//double spaces and more, more
“/\x20{2,}/”,
//remove spaces with $char_css, after and before
“/([{$char_css}]+)\x20/”,”/\x20([{$char_css}]+)/”,”/@[\x20]{1,}/”,
//remove all comments
“!/\*[^*]*\*+([^/][^*]*\*+)*/!”,
//short hex colour
“/#({$hex_char})\\1({$hex_char})\\2({$hex_char})\\3/i”,
//remove last ‘;’
“/;}/”,
);
//array with replacement
$replacement=array(
//new lines(\n and \r)
”,”,
//vertical tab and tab
”,”\x20″,
//NULL bytes (\0)
”,
//double spaces and more, more
“\x20″,
//remove spaces with $char_css, after and before
‘$1′,’$1′,’@’,
//remove all comments
”,
//short hex colour
‘#\1\2\3’,
//remove last ‘;’
“}”,
);
// strlen() before compress
$start=strlen($css_code);
//Compress CSS with regular expressions
$replace=preg_replace($pattern,$replacement,$css_code,-1);
// strlen() after compress
$final=strlen($replace);
//counts the difference in characters
$exhed=$start-$final;
//counts the difference in percentages
$compression=round(($exhed)/$start*100,2);
//Return compress CSS code with info (comment) in new line
return $replace.”\n”.’/* Poczatkowy rozmiar: ‘.$start.’ bajtow; Po kompresji: ‘.$final.’ bajtow; Zmniejszono o: ‘.$exhed.’ bajtow (‘.$compression.’% procent) */’;
}
//$css = htmlentities(clear_css($_POST[‘css’]), ENT_NOQUOTES, ‘utf-8’);
$css = strip_tags(stripslashes(compress_css($_POST[‘css_code’])));
$info_css = ‘Poniżej znajduje się skompresowany kod CSS.’;
}else {
$info_css = ‘Wklej tutaj kod kaskadowego arkusza stylów CSS a następnie kliknij Kompresuj CSS,
następnie kod CSS zostanie skompresowany i wyświetlony, oraz zostanie dodany komentarz podobny do:

/* Poczatkowy rozmiar: 5139 bajtow; Po kompresji: 3956 bajtow; Zmniejszono o: 1183 bajtow (23.02% procent) */

Który informuje o rozmiarze oryginalnego kodu, rozmiarze po kompresji oraz oszczędności w procentach.
Taki kod można wkleić do naszego arkusza stylów lub bezpośrednio do strony HTML.

Usuwa także komentarze !

‘;
$css = ”;
}
print <<<CSS

$info_cssZaznacz poniższy kod

CSS;
?>

Compressor JavaScript

if(isset($_POST[‘js_code’]) && isset($_POST[‘js_submit’])) {
function compress_javascript($js_code,$special_chars=false,$remove_new_lines=false) {
/*********************
//
//Compress JavaScript by tosiek – https://tosiek.pl/
//
*********************/
//
// Arrays
//
//array with pattern
$pattern=array(
//remove carriage return
“/\x0D/”,
//remove vertical tab
“/\x0B/”,
//Replace tabulators to one space
“/\x09{1,}/si”,
//Replace more then one spaces to once
“/\x20{2,}/”,
//Remove JS comments and HTML
‘/((?:\/\*(?:[^*]|(?:\*+[^*\/]))*\*+\/)|(?:\/\/.*))/’,’//si’,
);
if($special_chars==true) {
//Special JavaScript characters after and before the spaces are removed
$char_js='(|)|=|;|:|?|\’|”|+|-|\*|\/|%|!|<|>|&|\|[|]|{|}’;
//remove spaces with $char_js, after and before
$pattern[]=”/([{$char_js}]+)\x20/”;
$pattern[]=”/\x20([{$char_js}]+)/”;
}
if($remove_new_lines==true) {
$pattern[]=”/\x0A/”;
}
//array with replacement
$replacement=array(
//remove carriage return
”,
//remove vertical tab
”,
//Replace tabulators to one space
“\x20”,
//Replace more then one spaces to once
“\x20″,
//Remove JS comments and HTML
”,”,
);
if($special_chars==true) {
//remove spaces with $char_js, after and before
$replacement[]=’$1′;
$replacement[]=’$1′;
}
if($remove_new_lines==true) {
$replacement[]=”;
}
$start=strlen($js_code);
//Compress JS with regular expressions
$replace=preg_replace($pattern,$replacement,$js_code,-1);
// strlen() after compress
$final=strlen($replace);
//counts the difference in characters
$exhed=$start-$final;
//counts the difference in percentages
$compression=round(($exhed)/$start*100,2);
return $replace.”\n//Before compress $start bytes; After compress: $final bytes; $exhed ({$compression}%)”;
}
//$css = htmlentities(clear_css($_POST[‘css’]), ENT_NOQUOTES, ‘utf-8’);
$jss = strip_tags(stripslashes(compress_javascript($_POST[‘js_code’])));
$info_jss = ‘Poniżej znajduje się skompresowany kod JavaScript.’;
}else {
$info_jss = ‘Wklej tutaj kod JavaScript a następnie kliknij Kompresuj js,
następnie kod javascript zostanie skompresowany i wyświetlony, oraz zostanie dodany komentarz podobny do:

///Before compress 82 bytes; After compress: 74 bytes; 8 (9.75999999999999978683718%)

Który informuje o rozmiarze oryginalnego kodu, rozmiarze po kompresji oraz oszczędności w procentach.
Taki kod można wkleić do naszego pliku ze skryptem lub bezpośrednio do strony HTML.

Usuwa także komentarze !

‘;
$jss = ”;
}
print <<<JSS

$info_jssZaznacz poniższy kod

JSS;
?>

Planowane jest dodanie opcji które umożliwią wybór rzeczy do usunięcia.