Ошибка: Failed to parse the Currency Converter XML document.
$34 542.72


Ошибка: Failed to parse the Currency Converter XML document.
$1 156.77


Ошибка: Failed to parse the Currency Converter XML document.
$2 248.78


Сжатие данных на PHP

Многие броузеры поддержывают gzip сжатые файлы в «прозрачном» для пользователя режиме.

Для текстовых файлов (html страниц) коефициент сжатия этим методом составляет 0.2-0.3,
т.е. данные сжимаются в 3-5 раз (на бОльших файлах — больше), что даёт такое же ускорение закачки страницы при других равных условиях.

Что снижает эфективность использования сжатия данных
Ефект от сжатия снижается, если вы используете много графики (gif, jpeg, png), flash (swf), других мультимедиа.

Но если большинство данных у вас текстовые и ХТМЛ страница занимает более 50кб — смело используйте сжатие.


Ефект от использования сжатия снижается также при использовании современных модемных протоколов.

Вот что говорят их производители:

Протоколы сжатия данных (v.44/v.42 bis/mnp 5) и коррекции ошибок (v.42/mnp 2-4) поддерживаются для максимизации пропускной способности и проверки целостности передачи. v.44 более эфективный метод сжатия чем v.42 bis, что существенно увеличивает возвратную пропускную способность и таким образом, уменьшая время закачки для типов файлов, используемых в Интернет, таких какe Веб-страницы и несжатая графика, аудио, документы. Сжатие по протоколу v.44 может достигать уровня более чем на 25% эфективнее чем v.42bis. Типичный коефициент сжатия для v.44 на Веб-страницах около 6-1, что в конечном итоге дает пропускную способность до 300 kbps для 56-kbps соединений.


Поэтому эфект во времени загрузки может быть не совсем ощутимый. Тем не менее использование сжатия данных оправдано. Во-первых, алгоритм gzip более эфективный апаратного сжатия данных (он всего на 17% уступает rar-формату и на 2% — zip), в большей части благодаря тому, что вы сжимаете весь файл заразом, а модем — только текущие пакеты. Во-вторых, суммарная пропускная способность канала всегад меньше наиболее его «тонкого» места, т.е. если на какой то стадии используется более старый протокол, эфекта от апаратного сжатия конечный пользователь не получит.

Как узнать, поддерживает ли броузер сжатие
Если переменная окружения http_accept_encoding содержит «gzip» или «x-gzip», значит поддерживает. Узнать об этом в php можно проверив переменную $http_server_vars[«http_accept_encoding»] на вхождение «gzip»;

php имеет встроенные функции сжатия?

Для того, чтобы использовать сжатие, ПХП должен быть скомпилирован с библиотекой zlib. Её можна скачать здесь: http://www.gzip.org/zlib, но имеется она и в дистрибутиве php. При запуске «configure» нужно указать параметр —with-zlib или —with-zlib=/path/to/zlib (Если вы используете быблиотеку не из дистрибутива). Пользователи windows должны прописать в php.ini «extension=php_zlib.dll» (Естественно, php_zlib.dll должен быть в папке указанной в параметре «extension_dir=c:phpextensions»)

Насколько быстро работает фунцкция сжатия?
На процессоре p166mmx gzencode сжимает около 600-700 kb в секунду

Как сжать страницу
Для сжатия страницы можно использовать два способа:

Весь вывод делать не через echo, а в отдельную переменную.

Весь вывод делать в буфер вывода, поставив в начале страницы

<?php
ob_start(); //буферизация вывода
ob_implicit_flush(0); // выдача буфера только по команде ob_end_flush()
?>
Когда вывод страницы окончен, мы получаем содержимое буфера через
<?php
$page = ob_get_contents();
?> и сжимаем его функцией
<?php
$page = gzencode($page);
?> Перед выводом сжатой страницы нужно послать правильные заголовки

<?php
header(«content-encoding: gzip»);
header(«vary: accept-encoding»);
header(«content-length: » . strlen($page));
?> Конечно можно все это делать ручками, а можно и использовать классы pear «http_compress» и «cache_outputcompression». А ещё проще сохранить себе этот файл:
zip.php
<?php
function start() {
ob_start();
ob_implicit_flush(0);
}
function output($compress = true, $use_etag = true, $send_body = true) {
$min_gz_size = 1024;
$page = ob_get_contents();
$length = strlen($page);
ob_end_clean();

if ($compress && extension_loaded(«zlib») && (strlen($page) > $min_gz_size) && isset($globals[«http_server_vars»][«http_accept_encoding»])) {
$ae = explode(«,», str_replace(« », «», $globals[«http_server_vars»][«http_accept_encoding»]));
$enc = false;
if (in_array(«gzip», $ae)) {
$enc = «gzip»;
} else if (in_array(«x-gzip», $ae)) {
$enc = «x-gzip»;
}

if ($enc) {
$length = strlen($page);
header(«content-encoding: » . $enc);
header(«vary: accept-encoding»);
} else {
$compress = false;
}
} else {
$compress = false;
}

if ($use_etag) {
$etag = ««» . md5($page) . «»»;
header(«etag: » . $etag);
if (isset($globals[«http_server_vars»][«http_if_none_match»])) {
$inm = explode(«,», $globals[«http_server_vars»][«http_if_none_match»]);
foreach ($inm as $i) {
if (trim($i) == $etag) {
header(«http/1.0 304 not modified»);
$send_body = false;
break;
}
}
}
}

if ($send_body) {
header(«content-length: » . $length);
echo $page;
}
}
?> и включать его в нужные страницы:
<?php
include(«zip.php»);
start();
/*
cтраница
*/
output();
?>

 

Интересное

Установка IIS на Windows...
Internet Information Services (IIS) 6.0 – полнофункциональный веб-сервер, обеспечивающий основу для систем семейства Windows Server 2003, а также существующих веб-приложений и веб-служб XML. В IIS...
Подробнее...
Работа с ADO в Microsoft Excel
Достаточно часто требуется сформировать отчет и вывести его не только на печать, но и выгрузить в Excel. Последнего можно добиться 2 способами, либо получить данные средствами языка Navision C/Al...
Подробнее...
Использование программы...
Данная статья содержит сведения о бета-версии программного продукта корпорации Майкрософт. Информация в данной статье не является официальной и может быть изменена без предварительного...
Подробнее...
Система адресации в Интернете
Каждый человек, живущий на Земле, имеет адрес, по которому его в случае необходимости можно разыскать. Думаю, ни у кого не вызовет удивления то, что каждая работающая в Интернете машина также...
Подробнее...
Регистрируем простую...
Вам никогда не хотелось посмотреть, кто посещает вашу страницу ? Просто ради интереса или для статистики ? Или для ограничения доступа ? Если вы ответили да, хотя бы на один вопрос, то этот урок...
Подробнее...
Открытие XP Pro x64
Как энтузиаст новых технологий, я с нетерпением ждал возможности запустить на своем настольном компьютере Windows XP Professional x64 Edition. Недавно я собрал новую машину с процессором AMD...
Подробнее...
Безопасность в Windows XP
1. Стратегия безопасности Windows XP Модель безопасности Windows XP Professional основана на понятиях аутентификации и авторизации. При аутентификации проверяются идентификационные данные...
Подробнее...
10 советов по защите Wi-Fi...
Тема безопасности Wi-Fi соединения в наши дни очень популярна. На ряде форумов, ведутся энергичные дискуссии на предмет «лучшего решения». Один из наиболее часто обсуждаемых аспектов — большое...
Подробнее...
Поиск уязвимостей в PHP...
Итак, сейчас я Вам объясню, как я ищу баги в скриптах на PHP, так делаю я сам и не кому не навязываю свой вариант...Статья это маленькая, но я считаю полезная =)1. Если вы читали мою вторую статью...
Подробнее...
Перевод программ под Windows
Для перевода программ под windows используются редакторы ресурсов, которых развелось достаточно много. Самые лучшие, на мой взгляд, resurs hacker и restorator. У каждой из них есть свои плюсы и...
Подробнее...