我用Page Speed測試了我的網站,結果大約70/100。啓用壓縮是降低速度的第一個也是最重要的因素。PHP手冊GZip編碼
我知道我能做到這一點通過修改php.ini中自動做到這一點,但我更感興趣的是手動方法(gzencode
)。
的問題是要麼所有的瀏覽器中打開的網站(Firefox的失敗:「您要查看的頁面無法顯示,因爲它使用的壓縮無效或不支持的形式」,鍍鉻:「303,ERR內容編碼「等)或他們顯示編碼的字符串。
活頭顯示,瀏覽器接受編碼,並且響應具有內容類型集,但它仍然失敗。
GET/HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate
HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Length: 5827
Vary: Accept-Encoding
private function _compress($data) {
//return trim(preg_replace(array('/\>[^\S ]+/s','/[^\S ]+\</s','/(\s)+/s'), array('>','<','\\1'), $data));
$supportsGzip = strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false;
ob_start();
if ($supportsGzip) {
echo gzencode(trim(preg_replace('/\s+/', ' ', $data)), 9);
} else {
echo $data;
}
$content = ob_get_contents();
header("content-type: text/html; charset: UTF-8");
header("cache-control: must-revalidate");
$offset = 60 * 60;
$expire = "expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";
header($expire);
header('Content-Length: ' . strlen($content));
header('Vary: Accept-Encoding');
ob_end_clean();
echo $content;
}
如果我改變內容編碼爲zlib,我得到的編碼字符串:
‹������ÕZÿsÛ¶ÿW^‘¥²o‘¨/–-Ë–Ú؉_Ôµ•õÚ_v I°I‚!A©j–Öºnçÿb·»%ÍÚë²nëå?‘þ›=€¤L)’,ÛIw>ŸEâxïáƒ÷°ùÞ½O¶Ÿï߇Žtlؼµ·» $kŸ•¶ ã^ã<܃•\¾� Ÿº—\¸Ô6ŒûŽ」^Õ0z½^®WÊ ¿m4ÅjÅ°…XÎ’©Ã¦ænS·]#ÌÕF-|8LRPL²ìIÈ»5²-\É\™mô=FÀŒJ5"Ù—RóÝ�³Cý€ÉZ([ÙŠb%¹´YýÑãáîcx}±iD´˜¿KV#4」á§x>¬°à®íÒ ãpÅËæî1øÌ®‘@öm
我真的不關心了有關獲取壓縮不亞於我想知道爲什麼它不工作。
乾杯,
+1有趣的問題 – Wh1T3h4Ck5 2011-04-18 06:06:04
如果'$ supportsGzip'不應'內容Length'是gzip壓縮內容的長度呢? – Fanis 2011-04-18 06:18:18
@Fanis,內容包含緩衝區的內容,無論是編碼還是平原,取決於$ supportsGzip。 – 2011-04-18 06:51:37