簡體   English   中英

壓縮PHP生成的動態HTML

[英]Compressing dynamic HTML generated by PHP

我正在使用PHP創建一些動態網站。 我遇到了各種優化技術來優化我的網頁。 其中之一是HTML壓縮。 由於我的網頁中包含許多JS,CSS和內聯腳本。 生成的源(HTML)的總大小約為150KB。

但是,如果我保存生成的頁面源,並使用http://htmlcompressor.com/compressor.html之類的某些網站進行壓縮,則輸出文件大約為90KB(其中的空換行符和空格已刪除)。 那么,有什么方法可以在生成頁面時動態地執行此操作嗎? 是否有任何可用的幫助程序或庫? 任何有關此主題的幫助將不勝感激。

您可以做的最好的事情之一就是刪除不需要內聯的所有內聯腳本。

我在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();

如代碼所示,基本上,如果您已經發送了標頭-如果您已經發送了ANY輸出,則此代碼不會為您壓縮任何內容。

我遇到了一個稱為動態網站壓縮程序的腳本,該腳本可以在FLY上壓縮您的“ HTML-內聯CSS-內聯JS”(意味着您網站的每個頁面)。

它不會修改您實際服務器文件中的任何內容,換句話說,它不會修改文件,也不需要修改。 希望對您有幫助

您提到的網站已經為您提供了解決方案。 想一想,而不是壓縮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>

它將被正確壓縮;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM