2012-12-17 61 views
1

我的網站有一個問題,因爲某些瀏覽器(特別是歌劇和壁虎)「過度緩存」(緩存太多,我的口味)。測試php禁用緩存

我剛剛加入下面的PHP代碼片段在所有瀏覽器希望禁用緩存:

<?php 
header("Expires: Tue, 01 Jan 2000 00:00:00 GMT"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 
?> 

問:你將如何測試了這一點,以確保它的實際工作?

補充說明:我需要一個愚蠢簡單的測試;我的技術水平很低。我無法做緩存清除(URL更改),因爲它是一個單頁的網站。

+0

我會研究緩存破壞 - 當您對資產進行重大更改時更改您的URL - 相反。完全像這樣禁用緩存意味着速度較慢的網站。 – ceejayoz

回答

2

獲取當前時間()並將其存儲在PHP會話中。使用var_dump()打印出$ _SESSION數組,並打印當前時間()。點擊幾次「刷新」。預計會話數組保持穩定並且當前時間需要更改。如果兩者都保持穩定,腳本輸出將被緩存。

這裏舉例:http://www.laprbass.com/RAY_cache_test.php

<?php // RAY_cache_test.php 
error_reporting(E_ALL); 
date_default_timezone_set('America/Chicago'); 

// SEND HEADERS 
header("Expires: Tue, 01 Jan 2000 00:00:00 GMT"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 

// START SESSION 
session_start(); 

// GET CURRENT TIME 
$now = date('c'); 

// IF NO TIME IN SESSION YET, STORE ONE 
if (!isset($_SESSION['myTest'])) $_SESSION['myTest'] = $now; 

// SHOW THE SESSION AND THE CURRENT TIME 
echo 'SESSION TIME: ' . $_SESSION['myTest']; 
echo '<br/>'; 
echo 'CURRENT TIME: ' . $now; 
+0

我對PHP毫無用處,我需要上面的代碼片段才能對我進行修改。 – user1691389

+0

編輯前面的答案以添加代碼示例,您可以將其複製並安裝到服務器上進行測試。 HTH,〜Ray –

+0

如果你運行'session_start()' - php已經發送了所有必要的頭文件以防止緩存。只需檢查響應標題。所以你所有的'header()'行都是多餘的,沒有多大意義。 – zerkms

0

大多數瀏覽器的擴展名如開發人員工具Chrome或Firefox的Firebug允許你檢查包含您需要了解緩存的所有信息請求和響應頭。

此外,如果您在Windows上開發,我可以推薦使用Fiddler,其預留用於提供應用程序的深層流量分析可以向你解釋這是怎麼回事,在樸素簡單的英語緩存優良的調試代理。

0

您應該在Web服務器日誌中看到頁面訪問。比較訪問模式,當頁面被重新請求時,沒有您的額外頭文件。