【问题标题】:Minification of dynamic PHP pages via htaccess通过 htaccess 缩小动态 PHP 页面
【发布时间】:2012-11-01 07:08:48
【问题描述】:

我有一个网站,其中的文件都是 php 文件,在服务器上我们也有 htaccess 为友好的 url 进行重写,即 /about

我们已经通过 PHP 对 JS 和 CSS 进行了缩小,但是由于 HTML 位于实际页面上,因此有一种方法可以在 php 添加到页面的动态位之后但在服务器之前缩小 html发回给客户?

我尝试过实现 minify,但是回调函数会毫无错误地破坏页面。

【问题讨论】:

  • html 页面有多大?
  • Minify HTML/PHP的可能重复
  • 我说它不值得,关闭编译你的 js 并启用 gzip 和你保存更多的乐队然后删除一堆换行符html-minification
  • @Dragon 有些页面很大,有些则没有那么大。
  • @Lawrence Cherone 由于有些页面很大,我宁愿拥有它也不愿拥有它,已经压缩和缩小了 js 和 css。

标签: php html .htaccess minify


【解决方案1】:

在<doctype html>标签或配置文件之前使用它

function sanitize_output($buffer)
{
    $search = array(
        '/\>[^\S ]+/s',  // strip whitespaces after tags, except space
        '/[^\S ]+\</s',  // strip whitespaces before tags, except space
        '/(\s)+/s'       // shorten multiple whitespace sequences
        );
    $replace = array(
        '>',
        '<',
        '\\1'
        );
    $buffer = preg_replace($search, $replace, $buffer);
    return $buffer;
}
ob_start("sanitize_output");

【讨论】:

  • 这不应该在“&lt;/head&gt;”之前应用(如果输出已经开始则没有任何意义),而是在 PHP 脚本的最开始。
【解决方案2】:

如果我们正在讨论动态地缩小所有内容,我建议您谨慎对待将其视为优化。

是的,可能会节省大量带宽。是的,您的用户可能会从较小的下载量中获得性能提升。

但是,如果您正在使用 PHP 动态缩小文件(这听起来像是您正在做的事情),您实际上也可能会减慢最终用户的速度。

最好在静态文件上进行缩小。将它们缩小一次,保存它们,然后在请求文件时将缩小的文件提供给浏览器,无需任何进一步处理。每次请求文件时都在 PHP 中执行此操作可能会导致显着的性能开销,这很容易抵消较小下载大小带来的好处。

缩小 HTML 通常不如 Javascript 有效。 “缩小” PHP 生成的 HTML 的最佳方法是从 HTML 模板文件中删除不必要的空白。这通常是一项非常简单的任务,不需要专用的压缩工具——最简单的方法就是从文件中删除所有缩进。空白在 HTML 中是相关的,所以你不能把它全部去掉,但是失去缩进应该可以处理大部分问题,同时仍然方便地使文件保持合理的可读性。

所以我的建议是尽可能静态地缩小文件。但是,如果您必须即时进行,请不要使用 PHP 来完成这项工作。使用专用服务器插件,例如 Google 的mod_pagespeed。此插件会在您请求文件时为您缩小文件(速度比 PHP 可以做到的快得多),并且还负责缓存缩小后的版本,以尽量减少对性能的影响。

希望对您有所帮助。

【讨论】:

  • 嗨,缩小是即时完成的,但是我们正在缓存这些缩小的文件,所以一旦缩小完成,在文件更改之前它不会改变。
  • 很公平。 :-) 不过,您可能仍想查看 mod_pagespeed;它所做的不仅仅是简单的缩小和缓存。
  • 谢谢,现在看,看起来很史诗!
【解决方案3】:

您可以查看 PHP 中的输出缓冲,这将允许您进行最后的缩小步骤。如果您的目标是减少下载量,还可以研究 gZip 编码。

这可能会有所帮助:how to minify php page html output

【讨论】:

  • 谢谢我已经尝试过了,但是我遇到了一个问题,每次我尝试运行输出缓冲区回调时,它都会破坏我的页面并且不会返回任何错误。
  • 这次运行的错误级别是什么,当您添加更严格的错误通知程序时,您是否收到任何错误?有什么记录吗?
  • 我发现了问题所在,更多的是更少,问题是由缩小包引起的,用其他东西替换回调可以完美地工作,所以要运行一个单元测试,无论如何都会接受您的回答,因为这是最有帮助的! :)
【解决方案4】:

我最近遇到了一个脚本,用于即时缩小 HTML 源代码,脚本称为 Dynamic Website Compressor

这是一个基于 PHP 的脚本,但可以与 .htaccess 一起使用

【讨论】:

  • 这个需要购买。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-22
  • 1970-01-01
  • 2014-11-10
  • 2011-11-16
相关资源
最近更新 更多