如何在没有 apache 模块帮助的情况下压缩从多个 php 源文件生成的 html 文件


How to compress a html file with generated from multiple php source file without aid of apache module?

eg.

文件结构

+Site
|   +private_files
|   |  header.php
|   |  footer.php
|   |  head.php
|   |  anlytics.php
|   |  blah1.php
|   |  blah2.php
|   |  blah3.php
|   index1.php
|   index2.php
  • 每个服务文件都需要header.phpfooter.phphead.phpanalytics.php

    此外

  • index1.php需要 blah1.phpblah2.php .
  • index2.php需要 blah2.phpblah3.php .

页面结构

<!DOCTYPE html>
<html>
     <?php include 'private/head.php'?>
<body>
     <?php include 'private/header.php'?>
//rest code
     <?php include 'private/footer.php'?>
</body>
</html>

如何在没有阿帕奇模块的帮助下提供压缩的HTML文件?

我不太确定"没有 apache 模块的帮助"背后的原因。如果您的意思是您没有更改 apache 设置的访问权限(或权限(。你仍然可以从 php 本身使用 gzip。

就在标题中.php(第一个包含的 php,可以导出脚本中的任何内容(

ini_set('zlib.output_compression_level', 1); //the compress level you want, 1 is lowest
ob_start('ob_gzhandler');

如需进一步阅读ob_gzhandler - http://php.net/ob_gzhandler

如果你的意思是你甚至不想使用Apache或其他系统模块支持的任何系统命令。你只是寻找一个由php本身完成的解决方案。是的,您可以使用 ob_get_clean(( 获取所有内容,然后对字符串应用一些 gzip 压缩,然后回显它。另外,更改标题以让浏览器知道内容是gzip(ed(。但是,我认为您不会喜欢这种表演。此外,你需要很多额外的工作,感觉完全浪费;-(

进一步阅读ob_get_clean - http://php.net/ob_get_clean

把它放在<!DOCTYPE html> <html><?php include 'private/head.php'?> <body>之前:

<?php
   ob_start("ob_gzhandler");
?>

我将把你的问题分成两部分。1. 在站点中压缩您的 Css 和 Js,这甚至可以即时完成。请查看 http://manas.tungare.name/software/css-compression-in-php/2.即时压缩HTML文件。在这种情况下,您是否尝试过像cloudflare这样的服务。它们提供即时压缩。PHP 案例将涉及 curl,通过创建一个首先接收请求的新文件。然后文件通过 curl 获取 url 内容。然后可以压缩接收内容,然后回显。这是相当粗糙的。

您可以使用HTML Minify

 $filter = new Zend_Filter_Minify_Html();
 return $filter->filter($view->render($name));

它不是gzip压缩,但减小了页面
的大小点击这里查看Zend模块