Опубликовано автор в категориях Верстальщику.

css-compression
Изучение вопросов оптимизации загрузки сайтов не было лишним. В поисках свежих идей по оптимизации загрузки CSS я набрел на очень неплохой метод сжатия СSS с помощь PHP и mod_rewrite. Оригинал статьи на английском — Easy CSS Compression with PHP and mod_rewrite. Для читателей блога и для себя перевожу.

Суть этого метода заключается в том, что скрипт будет считывать CSS или JavaScript файл и автоматически убирать различные необязательные символы, будь-то пробелы, переносы строк, комментарии и прочее… На выходите мы получаем оптимизированный CSS или JS файл. Реализуется все это довольно несложно.

Во-первых, мы создаем файл csszip.php:

<?php
ob_start ("ob_gzhandler");
if( isset($_REQUEST['file']) ){
	$file = $_REQUEST['file'];
	$ext = end(explode(".", $file));
	switch($ext){
		case 'css':$contenttype = 'css';break;
		case 'js':$contenttype = 'javascript';break;
		default:die();break;
	}
	header('Content-type: text/'.$contenttype.'; charset: UTF-8');
	header ("cache-control: must-revalidate");
	$offset = 60 * 60;
	$expire = "expires: " . gmdate ("D, d M Y H:i:s", time() + $offset) . " GMT";
	header ($expire);
	$data = file_get_contents($file);
	$data = compress($data);
	echo $data;
}
exit;
function compress($buffer) {
	$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
	$buffer = str_replace(array("\r\n", "\r", "\n", "\t", '  ', '    ', '    '), '', $buffer);
	return $buffer;
}

Этот файл будет обрабатывать и сжимать наши входящие CSS файлы.

Далее, нужно автоматизировать этот процесс, без каких либо сторонних записей в теле документа. Для это нужно создать или использовать имеющийся файл .htaccess. В него нужно добавить следующие строки кода:

RewriteEngine On
RewriteRule ^(.*).css$ /csszip.php?file=$1.css [L]

Естественно, не нужно дублировать строку RewriteEngine On, если такая уже имеется. Строка, которая следует после включения модуля указывает серверу на то, что нужно обработать любой имеющийся CSS файл.

Так же вы можете указать для обработки и JavaScript файлы, добавив строку:

RewriteRule ^(.*).js$ /csszip.php?file=$1.js [L]

Этот метод хорошо для уменьшения вашего трафика, и сокращения времени загрузки страницы, что всегда желательно.

P.S. Ах, Одесса…

Ни для кого не секрет что прибыль, которую дают морские грузоперевозки составляет большую чать бюджета Одессы. Поэтому очень часто можно встретить на морских картах трассы в направлении odessa ukraine.
А в самой Одессе можно найти что угодно, например: quality replica watch. Да качественны, брендовые часики:)

2 комментария к записи “Простое сжатие CSS с помощью PHP и mod_rewrite”

  1. Boris

    Мне это решение понравилось больше всех! Простое и качественно работающее (кроме jquery и подобных скриптов)!
    Огромное спасибо.

    Ответить

Оставить комментарий

  • (не будет показан)