PHP: Буферизация вывода - Сжатие выходных данных
| Индекс материала |
|---|
| PHP: Буферизация вывода |
| Повторное использование буферов |
| Чтение буферов вывода |
| Сжатие выходных данных |
| Все страницы |
Сжатие выходных данных
Для того чтобы сжать буфер вывода нужно передать функции ob_start() параметр - имя функции - компрессора, например ob_gzhandler.При этом будет выполнена проверка поддержки сжатия и если такая поддержка есть, то данные будут сжиматься:
// Здесь мы включили сжатие буфера:
ob_start('ob_gzhandler');
echo 'Contrary ... section';
ob_end_flush();
Результат обведён красным:
А вот результат без сжатия вывода:
Сжатие работает только применительно к HTML - коду, к картинкам и прочему это не относится. Учитывайте это. А ещё PHP позволяет сжимать только один буфер вывода, так как содержимое должно сжиматься всё и сразу. Имейте это ввиду, если вы используете стек буферов вывода.
Переписывание URL
Скажу сразу что к ЧПУ ссылкам и к mod_rewrite данные возможности не имеют никакого отношения, но тем не менее позволяют вытворять
интересные штуки.
Эта функция принимает два параметра, первый это имя переменной, а второй это значение этой переменной. Эта пара ключ-значение добавиться ко всем URL, формам и атрибутам SRC - элементов FRAME, в виде GET - переменных строки запроса. К формам добавятся скрытые поля с соответствующими значениями. В общем проще показать на примере:
ob_start();
output_add_rewrite_var('somevar', 'someval');
echo '<form action="anywere.html" method="get">
<input name="..." value="..." />
</form>';
echo '<a href="anywere.html">LINK</a>';
ob_end_flush();
Выдаст такой HTML - код:
<form action="anywere.html" method="get"> <input type="hidden" name="somevar" value="someval" /> <input name="..." value="..." /> </form> <a href="anywere.html?somevar=someval">LINK</a>
Заметьте атрибуты action тега form - остались не тронуты! Пример с тегами FRAME:
ob_start();
output_add_rewrite_var('somevar', 'someval');
echo '<frameset cols="80,*">
<frame src="left.html" name="leftFrame" scrolling="no" noresize>
<frame src="main.html" name="mainFrame">
</frameset>';
ob_end_flush();
Выдаст такой HTML - код:
<frameset cols="80,*"> <frame src="left.html?somevar=someval" name="leftFrame" scrolling="no" noresize> <frame src="main.html?somevar=someval" name="mainFrame"> </frameset>
Функцию output_add_rewrite_var() можно вызывать несколько раз с разными параметрами, в этом случае пары будут добавляться согласно формату кодирования данных: "application/x-www-form-urlencoded" разделяясь знаками амперсанда а в формы будут добавляться новые скрытые поля. Вот так будет выглядеть пример:
ob_start();
output_add_rewrite_var('somevar', 'someval');
output_add_rewrite_var('somevar1', 'someval1');
output_add_rewrite_var('somevar2', 'someval2');
echo '<form action="anywere.html" method="get">
<input name="..." value="..." />
</form>';
echo '<a href="anywere.html">LINK</a>';
ob_end_flush();
Выдаст такой HTML - код:
<form action="anywere.html" method="get"> <input type="hidden" name="somevar" value="someval" /> <input type="hidden" name="somevar1" value="someval1" /> <input type="hidden" name="somevar2" value="someval2" /> <input name="..." value="..." /> </form> <a href="anywere.html?somevar=someval&somevar1=someval1&somevar2=someval2">LINK</a>
А вот если в конце примера вызвать функцию output_reset_rewrite_vars() - то она отменит все изменения произведённые вызовами функций output_add_rewrite_var(...) т.е. все ссылки вернуться к исходному состоянию.
Ну, вот надеюсь я доступно объяснил что такое буферизация вывода в PHP и с чем её едят.
Экофикс у нас на сайте
Все подробности Экофикс у нас на сайте.
лотос-трейдинг.рф
Добавить комментарий
Информация копипастерам
Внимание! Копирование контента с сайта, возможно только с разрешения администратора. Т.е. Меня! Я скорее всего разрешу Вам это сделать, в обмен на живую ссылку, на статью оригинал.
PHP: Буферизация вывода - Сжатие выходных данных
