2010-04-03 67 views
9

要允許緩存PHP生成的文件,我想確保'Pragma:no-cache'標題爲而不是集合。但是,如何刪除可能已經設置的標題?在PHP中刪除標題

也就是說,它可能是可能的,在某些地方的代碼有人寫header('Pragma: no-cache');現在我想確保,頭不發送。

是否足以做到這一點:

header('Pragma:'); 

或者是有什麼樣delete_header()(這很顯然,是無證或隱藏良好)?

+2

既然PHP是開源軟件,那麼在那裏有一些「沒有文檔,很好隱藏」的東西是無稽之談。 – selfawaresoup 2010-04-03 18:04:14

+3

@Techpriester:我知道幾十個完全沒有記錄的操作系統項目,隱藏起來也可能是無意的。 – Boldewyn 2010-04-03 21:11:01

回答

13

header_remove()由於PHP 5.3

header_register_callback()也即將上市

+0

很酷,謝謝。很遺憾,PHP男孩最近纔想到這一點(畢竟,HTTP處理是PHP的核心應用領域)。 – Boldewyn 2010-04-03 21:14:09

+4

php 5.3之前有什麼解決方案?我目前有PHP/5.2.17 – Pacerier 2011-09-25 16:27:54

+0

@Pacerier for php <5.3.0「標題('Pragma:');」做這項工作。瀏覽器不會收到任何'Pragma'標題(甚至空白)。 – maliayas 2012-08-19 23:08:06

2

你可以通過傳遞第二個參數給header()覆蓋先前設置的標題:

void header (string $string [, bool $replace = true [, int $http_response_code ]]) 

檢查manual for header()

+0

我知道,但問題是,如果這是足夠的,即如果爲header()提供'Pragma:'將從發送列表中刪除它。 – Boldewyn 2010-04-03 21:12:54

+1

@Boldewyn不,它不會從發送列表中刪除它。它會覆蓋它沒有值,這意味着雖然預期的結果是相同的,但我們發送不必要的字節,因爲我們仍然必須通過線路發送字符串「Pragma:」。 – Pacerier 2012-07-12 00:40:24

1

'雜注'標題行爲不是由規範定義的 - 儘管wi我們相信,發送一個'Pragma:No-cache'頭文件會對瀏覽器產生一些影響,實際上它幾乎被普遍忽略(並且永遠不會被我用過的任何PHP安裝程序返回)。

要告訴瀏覽器不要緩存內容,可以通過過期的日期頭,帶有無緩存值的緩存控制頭,或者(如果你想偷偷摸摸) :日期'標題。在沒有任何這些類型的頭部的情況下,客戶端不得高速緩存該頁面。

因此,相反,如果您希望頁面可緩存,請設置expires和cache-cntrol標頭。

C.

+0

這不回答這個問題..問題是關於「在PHP中刪除頭」而不是如何實現緩存。 – Pacerier 2011-09-25 16:32:23

+1

不是 - 這是問題的標題,但是OP試圖實現的內容是使內容可緩存 - 刪除一個雜註標題與此無關 – symcbean 2011-09-26 08:23:03

+0

問題是「如何刪除可能已經設置的標題?」 – Pacerier 2013-03-09 11:43:41

3

我知道這個問題已經老了,已經回答了。但是其中一些答案可能會給人留下錯誤的印象。請放心,如果您的響應標題包含Pragma: no-cache,那麼絕對會阻止Web瀏覽器緩存資源,而不管其他設置如何。

所以當然,如果您至少使用PHP 5.3,您可以使用header_remove('Pragma');刪除Pragma標題。