2009-06-08 42 views
0

我設置什麼,我認爲是正確的HTTP標頭從PHP緩存和我每月的第二個請求,得到一個500錯誤。離奇的錯誤嘗試使用HTTP緩存頭從PHP

任何人都可以指向正確的方向嗎?

做緩存的代碼是:

<?php 
header('Content-Type: text/css'); 
$content = file_get_contents('test.css'); 
header('Content-Length: '. strlen($content)); 

$expires = 3600; 
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) { 
    // Split the If-Modified-Since (Netscape < v6 gets this wrong) 
    $modifiedSince = explode(';', $_SERVER['HTTP_IF_MODIFIED_SINCE']); 

    // Turn the client request If-Modified-Since into a timestamp 
    $modifiedSince = strtotime($modifiedSince[0]); 
    $current_time = time(); 
    if (($current_time - $modifiedSince) < $expires) { 
    header("304 Not Modified"); 

    //echo $current_time - $modifiedSince; 
    exit(); 
    } 
} 

$current_time = time(); 
header("Last-Modified: ".gmdate("D, d M Y H:i:s", $current_time)." GMT"); 
header("Expires: " . gmdate("D, d M Y H:i:s", $current_time+$expires) . " GMT"); 
header("Cache-Control: max-age=$expires"); 
echo $content; 

感謝

編輯1:我已經清除了緩存沒有快樂,有人報告它爲他們工作。這是否意味着服務器配置問題?它在託管服務器上,如果它很重要。

編輯2:似乎沒有在IE中發生,但是當我跑你的代碼我沒有得到一個狀態500錯誤在Firefox

+0

工作好我。嘗試清除瀏覽器緩存。你可能已經緩存了500個東西。 – 2009-06-08 18:29:48

+0

嘗試沒有快樂。 是否暗示服務器配置到你? – 2009-06-08 18:33:12

回答

4

確實會發生,但我所看到的每一個其他要求「服務該文件提供一個空白頁面「的行爲類似於你所描述的。

,當你設置狀態304.你錯過了「HTTP/1.1」它看起來像你沒有正確使用header()函數。這意味着PHP正在發送一個Status 200頭,然後退出而沒有輸出。嘗試

header("HTTP/1.1 304 Not Modified"); 

如果你真的是在所有其他要求得到一個服務器的500錯誤,閒逛你的網絡服務器(Apache的?)的日誌,看看什麼樣的錯誤,如雨後春筍般冒出。