2012-09-20 55 views
0

我正在使用PHP创建一些动态网站。我已经通过各种优化技术来优化我的网页。其中之一是HTML压缩。由于我的网页上有很多JS,CSS和内联脚本。生成的源代码(HTML)的总大小约为150KB。压缩由PHP生成的动态HTML

但是,如果我保存生成的页面源,并使用像http://htmlcompressor.com/compressor.html这样的网站进行压缩,则输出文件大约90KB(其中空行换行和空格被删除)。那么有什么办法可以在页面生成时动态地做到这一点?有没有可用的帮手或图书馆?任何有关这个话题的帮助将不胜感激。

+0

看看[这里](http://stackoverflow.com/questions/6225351/how-to-minify-php-page-html-output)。第一个答案全部变成了 – karka91

回答

1

您可以做的最好的事情之一是删除不需要内联的任何内联脚本。

我有这个在我的PHP文件的顶部:

ob_start(); 
ob_implicit_flush(0); 

然后,我有这个功能:(我的笔记不说我来自哪里偷来的)

function print_gzipped_page() { 
    $HTTP_ACCEPT_ENCODING = $_SERVER["HTTP_ACCEPT_ENCODING"]; 
    if(headers_sent()) 
    $encoding = false; 
    else if(strpos($HTTP_ACCEPT_ENCODING, 'x-gzip') !== false) 
    $encoding = 'x-gzip'; 

    // *** I can't recall why I disabled this one *** 
    // I had some device that it didn't work with. 

    //else if(strpos($HTTP_ACCEPT_ENCODING,'gzip') !== false) 
    // $encoding = 'gzip'; 
    else { 
    $encoding = false; 
    } 


    $contents = ob_get_clean(); 

    if ($encoding) 
    { 
    $_temp1 = strlen($contents); 
    if ($_temp1 < 2048) { // no need to waste resources in compressing very little data 
     print($contents); 
    } else { 
     header('Content-Encoding: '.$encoding); 
     print("\x1f\x8b\x08\x00\x00\x00\x00\x00"); 
     $contents = gzcompress($contents, 9); 
     $contents = substr($contents, 0, $_temp1); 
     print($contents); 
    } 
    } 
    else { 
    print($contents); 
    } 
} 

在在页面的最下方,我只要致电:

print_gzipped_page(); 

正如代码说,如果你已经发送了头 - 如果你已经发送任何输出,基本上,那么这个代码不是为你压缩任何东西。

+1

他并不是指通用压缩。他的意思是HTML和CSS压缩,其中重复的CSS内容得到优化,CSS类名称减少,JavaScript变量和函数名称重新命名为较短的字符串。另外,对于gzip压缩,网络服务器会做的更好,性能明智(除非你也永久缓存页面,保存压缩会扭转优势)。 –

0

我遇到了一个脚本,名为Dynamic Website Compressor,它可以压缩FLY上的'HTML - 内联CSS - 内联JS'(意味着您网站的每一页)。

它不会修改您的实际服务器文件中的任何内容,也就是说它不会修改您的文件,也不需要修改。我希望它可以帮助你

0

你已经提到的网站已经为你提供了一个解决方案。想想看,而不是压缩PHP文件的HTML输出,让他们生成已压缩的HTML。这样,你不会浪费额外的资源来压缩输出,因为你已经做到了。

我使用HTMLCompressor压缩WordPress主题PHP文件,它的工作原理就像一个魅力。只需从代码类型列表中选择x/html + PHP

注意,它不压缩包含在PHP字符串的HTML代码,所以如果你的PHP文件生成这样的代码:

<?php 
echo '<div>'; 
echo ' <b> Some number is ' . $num . ' </b>'; 
echo '</div>'; 
?> 

将其更改为:

<div> 
    <b> Some number is <?php echo $num; ?> </b> 
</div> 

,这将是正确压缩;)