2011-06-04 30 views
0

我將我網站的主頁作爲平面html文件緩存,然後用.htaccess加載該文件(如果用戶未登錄)(因爲沒有用戶特定信息顯示),而不是加載我的整個PHP框架。保存用瀏覽器可讀的PHP格式化html文件

其中一個缺點是PHP不會自動將文件gzip,因爲PHP甚至沒有被使用,因爲它只是一個純瀏覽器加載的html文件。

我嘗試這樣做:

$html = gzencode($html); 
$fp = fopen($cachefile, 'w'); 
fwrite($fp, $html); 

但是當文件的URL在瀏覽器中加載它只是一堆奇怪的字符。

編輯:我想一個簡單的解決方案是將文件保存爲.php而不是html,這樣php ob_gzhandler壓縮文件。我不知道是否有被服務了一個已經gzip壓縮的HTML和完全跳過PHP進行了性能增益..

+0

因爲你發送的是編碼文件 – Ibu 2011-06-04 20:18:46

+0

我不認爲你想讓Apache爲你做這個工作......總是有mod_deflate:/ – 2011-06-04 20:18:51

+1

將你的文件保存爲「cache.html.gz」一起發送正確的Content-Encoding標頭。 – mario 2011-06-04 20:19:52

回答

1

UPDATE:作爲OP發現,ob_gzhandler()可以處理這種使用情況下,並且是不是一個壞的路要走。

原文答案:即使您設法以某種方式進行此項工作,它很可能會導致性能低於將文件作爲純文本文件在您的文件系統上。

如果您想利用gzip壓縮,請讓Apache使用mod_deflate進行壓縮。存儲您的文件未壓縮。 Apache將處理壓縮問題。

但是在你經歷任何麻煩之前得到這個設置:這個文件有多大?如果它不是一個非常大的HTML文件,則每次事務解壓文件的開銷成本可能超過實際壓縮的好處。你真的只能看到非常大的HTML文件的好處,而這些文件可能會導致瀏覽器停下來。所有這一切,你可以使用gzdecode()來解壓文件,但是你沒有提供靜態文件 - 你在通過PHP運行它之前,它會提供它。再次,對於這種用例,最好的辦法可能是直接提供HTML而不是搞亂壓縮。

+0

是的好點。所以現在我只是將緩存文件保存爲.php而不是.html,以便php ob_gzhandler壓縮文件。我認爲完全跳過PHP可能會給我一個性能提升,但它可能太小而不重要。 – makeee 2011-06-04 20:25:11

+0

這是一個150KB的文件,只有15kb的壓縮文件,所以我一定要發送給用戶壓縮文件。 – makeee 2011-06-04 20:29:27

+0

很酷。 'ob_gzhandler()'是一個不錯的選擇,我有點尷尬,我沒有在我的答案中包含它。猜猜我現在就去更新它。 – Trott 2011-06-04 20:35:14

相關問題