Любой способ разбить gzip на Apache и PHP - PullRequest
4 голосов
/ 19 мая 2010

У меня есть веб-приложение на сайте, которое занимает некоторое время (~ 10 секунд), чтобы заполнить часть страницы в нижней части - оно было оптимизировано настолько, насколько это возможно, и кэширование не вариант.

У нас включено сжатие на сервере с помощью директивы .htaccess SetOutputFilter DEFLATE проблема заключается в том, что вся страница удерживается до завершения, прежде чем она начнет выводиться пользователю, это не оптимально, поскольку пользователь ничего не видит до тех пор, пока страница заполнена.

Я тоже пробовал через метод php ob_start("ob_gzhandler");.

В настоящее время в моем .htaccess есть <FilesMatch >, ограничивающий сжатие этого конкретного сценария.

По сути, мой вопрос таков: есть ли способ сказать chunk gzip или deflate, чтобы пользователь получил его по частям, чтобы он мог видеть, что страница начала загружаться?

Ответы [ 3 ]

1 голос
/ 26 мая 2010

Если вы используете метод ob_start("ob_gzhandler"), вы можете сделать это - вам нужно взглянуть на функции flush и ob_flush .

Пример кода - попробуйте загрузить с помощью curl или используйте fiddler для проверки фактических ответов HTTP

<?php
ob_start('ob_gzhandler');
print "chunk 1";
ob_flush();
flush();
sleep(2);
print "chunk 2";
ob_end_flush();

К сожалению, браузеры, кажется, не отображают это в чанках - я думаю, это потому, что данные каждого чанка слишком малы. Вы можете проверить этот эффект, вызвав wget -O - -q http://chunktest/chunktest.php в вашем тестовом файле.

Есть еще несколько полезных ресурсов здесь

1 голос
/ 19 мая 2010

Я бы сказал: нет. Я думаю, что теперь есть способ, предоставляемый HTTP.

0 голосов
/ 27 мая 2010

Если страница занимает слишком много времени загрузки, творческий способ справиться с ней - это использовать очень быструю загрузку страницы с помощью ajax-вызова для этого долго загружаемого контента на странице. Мы делаем это для страниц, которые извлекают подробную статистику использования пользователей ... Другие сайты, например Adsense, делают это на странице своих отчетов.

...