[英]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.