2010-06-09 48 views
0
在我的web應用程序的根目錄

,.htaccess文件包含以下行:PHP:禁止AddOutputFilterByType的.htaccess選項

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript text/javascript

這意味着,我的所有網頁都gzip壓縮,這是好的。

在一些頁面中,我需要讓瀏覽器在腳本結束之前關閉連接(我需要一些耗時的後處理)。要做到這一點我做的:

ignore_user_abort(true); 
set_time_limit(0); 
$str = ob_get_contents(); 
ob_end_clean(); 
header("Content-Length: ".strlen($str)); 
header('Connection: close'); 

無壓縮它的工作原理,用gzip壓縮啓用未:瀏覽器呈現的頁面,但載輪仍然運行。

問題是:有沒有一種方法(使用ini_set())來禁用gzip壓縮,只對某些頁面,從php代碼內部?

回答

0

事實上,一些測試後,我發現,接受的解決方案不是最優的:

  • 阿帕奇覆蓋Content-Encoding頭,如果壓縮是,
  • 改變內容類型有然後你必須生成良好的XML(這是一個PITA,因爲網頁設計師在HTML方面工作)。

的工作解決辦法是禁用良好壓縮:從優秀的PHP文件兩者

1

剛剛發現了可能有用的東西。它可以防止Apache應用gzip/defalte編碼。如果禁止過濾器模塊本身,則不會疼:

header("Content-Encoding: identity"); 

或者使用application/xhtml + xml Content-Type。

+0

其實

@apache_setenv('no-gzip', 1); @ini_set('zlib.output_compression', 0); 

中,'內容Type'變化,用一個不匹配指定類型的工作。 我想我會選擇這個解決方案,謝謝。 – Iacopo 2010-06-09 20:16:14

+0

有關詳細信息,請參閱[RFC 2616(14.3和14.11)](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html) – 2014-07-24 15:53:40