Сохраните сжатый HTML-файл с PHP, который читается браузерами - PullRequest
0 голосов
/ 05 июня 2011

Я кеширую главную страницу своего сайта в виде плоского html-файла, а затем с помощью .htaccess загружаю этот файл, если пользователь не вошел в систему (поскольку никакая информация о пользователе не отображается), вместо загрузки всего моего phpframework.

Недостатком этого является то, что PHP не загружает файл автоматически, поскольку PHP даже не используется, так как это просто обычный HTML-файл, загружаемый браузером.

Я пробовал это:

$html = gzencode($html);
$fp = fopen($cachefile, 'w'); 
fwrite($fp, $html); 

Но когда URL-адрес файла загружается в браузер, это просто куча странных символов.

РЕДАКТИРОВАТЬ: Я думаю, что одно простое решение будетчтобы сохранить файлы как .php вместо html, таким образом php ob_gzhandler сжимает файл.Мне интересно, можно ли получить прирост производительности, обслуживая уже разархивированный html и пропуская php вообще ..

1 Ответ

1 голос
/ 05 июня 2011

ОБНОВЛЕНИЕ: Как обнаружил OP, ob_gzhandler() может иметь дело с такого рода вариантами использования, и это не плохой путь.

ОРИГИНАЛЬНЫЙ ОТВЕТ: Вполне вероятно, что даже если вам удастся как-то выполнить эту работу, это приведет к более низкой производительности, чем просто наличие файла в виде простого текстового файла в вашей файловой системе.

Если вы хотите использовать сжатие gzip, попросите Apache сделать это с помощью mod_deflate. Храните ваш файл без сжатия. Apache решит проблему сжатия.

Но прежде чем вы начнете сталкиваться с какими-либо проблемами при настройке: насколько большим может быть этот файл? Если это не очень большой HTML-файл, издержки, связанные с необходимостью распаковывать файл при каждой транзакции, вероятно, перевешивают выгоду от фактического сжатия. Вы действительно увидите преимущество только с очень большими файлами HTML, и эти файлы, вероятно, приведут к тому, что браузер в любом случае остановится.

Все это говорит о том, что вы можете использовать gzdecode(), чтобы распаковать файл, но тогда вы не подаете статический файл - вы запускаете его через PHP перед его обслуживанием. Опять же, для этого варианта использования лучше всего подавать простой HTML, а не возиться со сжатием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...