Еще раз про GZip сжатие страниц и кеширование

Так вот о чем я. Поразмыслил тут и
Зачем писать весь этот бред? делаем проще, лол =)
в index.php после
21: header('Content-Type: text/html; charset=utf-8');
пишем
22: ob_start('ob_gzhandler');
Либо просто, если имеем доступ, выставляем в php.ini в примерно 126 линии:
zlib.output_compression = On
zlib.output_compression_level = -1
и готово. что касается самих js/css файлов.

тут тоже ничего страшного нет:
создаем файл index2.php и в нем пишем следующее:
<?php
ob_start('ob_gzhandler');
$file_type = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], '?')-3, 3);
if($file_type == 'css') $file_type = 'text/css';
elseif($file_type == '.js') $file_type = 'text/javascript';
else $file_type = 'text/plain';
if(file_exists(getcwd(). $_SERVER['REQUEST_URI']))
$output = file_get_contents(getcwd(). $_SERVER['REQUEST_URI']);
else die(header('location: /'));
// ну и конечно же кеш для статики
$expires = 3600*24*30;
header("Pragma: public");
header("Cache-Control: maxage=".$expires);
header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$expires) . ' GMT');
header('Content-type: '.$file_type);
die($output); // отдаем скриптом, чтобы ob_gzhandler смог сжать выход.
сюда можно еще многое добавить, например вырезать из output пустые строки и/или перевод каретки и/или комментарии:$output = preg_replace('#\/\*(.*)\*\/#', '', $output);
$output = preg_replace('#\/\/(.*)#', '', $output);
в данном виде эти две строки врятли будут работать, я лишь хотел показать что я имею ввиду. просто нет времени писать сложные регулярки, кто силен тот можете отписатьсядля того чтобы вся эта кострукция заработала, нам необходимо весь css, js траффик пустить через index2.php. Делается это так:
RewriteRule ^(.*)\.(css|js)$ index2.php [L]
Вставить необходимо сразу под
RewriteEngine On
и вот что у нас получилось:
Главная фишка моего подхода заключается в том, что у меня страницы грузятся если человек находится за проксей, а представленное решение топикстартера не позволяет этого сделать ссылаясь на HTTP_TE какое то…
результат работы строки
22: ob_start('ob_gzhandler');


есть еще один момент чтобы ускорить работу сайта. в .htaccess можно добавить
ExpiresActive On
ExpiresDefault a5356800
ExpiresByType image/x-icon image/jpeg image/gif image/png a5356800
ExpiresByType application/x-javascript a5356800
ExpiresByType text/css a5356800
ExpiresByType text/html a5356800
<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
ExpiresActive Off
</FilesMatch>
Это кеширование по типу файла, очень хорошая вещь для массового браузерного кеша.
p.s. и, уважаемые программисты, не ставьте знак ?> в конце файла, это сэкономит не только размеры файлов, но и многие часы дебага
p.s.s в данный момент подготавливаю большой модуль «галерея изображений». Аналог галереи в вордпресс.
ну и если топик не заминусуют, то, как закончу, выложу в доступ шаблон в стиле
8 комментариев
P.S сайт у вас тоже оказался полезным
1. Зачем нагружать то что и так чаще всего является узким местом, а именно апликейшен часть?
2. Операция сжатие довольно ресурсоемкая, поэтому логичней держать все сжатым и распаковывать при необходимости…
Вот примерный список чего можно сжимать:
Expires тоже не плохая штука, но ставить такие сроки не правильно, правда уже не вспомню почему и искать времени нету…
Результат нулевой…
Посмотрел через Page Speed строчку про gzip не нашел.
Возможно что-то не так сделал?
прписываем, как я понимаю в .htaccess?
У меня на LS 0.4.2 rev.1214 всё отлично работает.