[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Использование Zlib - все так просто?
Forever
Гуглил, как ускорить загрузку веб-страниц сайта с помощью расширения Zlib,
нашел два варианта.

1) Проверить, включено ли расширение, и если да, - прописать вот такие строки на странице:
ini_set(‘zlib.output_compression’, ‘On’);
ini_set(‘zlib.output_compression_level’, ’1′);

Неужели эти две строчки помогут ускорит загрузку страниц?:)

Или все вот так сложно на самом деле?))
2)
Для сжатия страницы можно использовать два способа:
Весь вывод делать не через echo, а в отдельную переменную.
Весь вывод делать в буфер вывода, поставив в начале страницы ob_start()
ob_start(); //буферизация вывода
ob_implicit_flush(0); // выдача буфера только по команде ob_end_flush()

Когда вывод страницы окончен, мы получаем содержимое буфера через
$page = ob_get_contents();
сжимаем его функцией
$page = gzencode($page);
Перед выводом сжатой страницы нужно послать правильные заголовки
header('content-encoding: gzip');
header('vary: accept-encoding');
header('content-length: ' . strlen($page));
И вывести сжатую страницу
echo $page;
Конечно можно все это делать ручками, а можно и использовать классы библиотеки pear "http_compress" и "cache_outputcompression". А ещё проще сохранить себе этот файл:
zip.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;
}
}
И включать его в нужные страницы:
include('zip.php');
start();
/*
cтраница
*/

output();
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.