2013-04-30 99 views
0

當我上傳新內容到我的網頁示例新圖像,當我連接到網頁時,我仍然看到舊圖像,即使當我在代碼中看我看到新的內容。Ho更新網站時處理保存在緩存中的圖像嗎?

我懷疑內容保持在本地緩存在我的瀏覽器,所以只有當緩存滿了或清理我看到新的內容。

任何人都可以告訴我,如果可以讓用戶看到我上傳後立即上傳的新內容,而他們不必清除緩存,

我可以爲本地用戶禁用它嗎?

回答

1

最簡單的方法是,無論何時修改文件,都會給它一個新的文件名。

或者,您可以附加一個時間戳。原始版本是這樣的:

<img src="images/foo.gif?t=<?php echo time(); ?>" /> 

但是這會導致圖像每次都會被重新加載。一個更好的版本是:

<img src="images/foo.gif?t=<?php echo filemtime($siteRootDir . '/images/foo.gif'); ?>" /> 

這將打印文件本身的修改時間,因此當文件被實際修改的新版本將只要求。顯然$siteRootDir必須有一個相關的值。

1

您可以在<img/>標記中的url的末尾添加一個簡單的?<?php echo time();?>,但這會強制頁面每次都重新加載圖像..而不僅僅是當您更新它們時。

0

我所做的是將時間函數附加到圖像URL的末尾,以便每次爲每個用戶動態地點擊它。例如:

echo '<img src="images/image.jpg?' . time() . '" alt="">'; 
+0

要禁止本地用戶使用IF條件來檢查IP網絡範圍的子字符串。使用$ _SERVER ['REMOTE_ADDR']全局變量。 – Frank 2013-04-30 08:54:24

1

一種常見的方法是在圖像調用後添加GET字符串。

在你的配置某處設置字符串:

<?php $version = "xyz123"; ?> 

現在字符串添加到您的圖片,腳本或CSS調用:

<img src="path/to/image.png?<?php echo $version; ?>"/> 

每當你改變你的東西修改版本字符串強制更新外部文件。

+0

你會爲每張圖片做這個工作嗎?或者只是一個字符串,所以當它發生變化時,網站中的每個圖像都會被重新請求? – leftclickben 2013-04-30 08:53:35

+0

每次更新代碼時修改的配置文件中的一個字符串。儘管將「echo $ version」片段添加到每個圖像調用中都是一次性工作。 – phreaknerd 2013-04-30 09:02:41

+0

有趣,我從來沒有見過這個。如果你可以這樣做,強制每個客戶端重新加載站點中的每個圖像,每當更新任何一個圖像時,我都不明白爲什麼。 (我想這將取決於您使用的圖像數量以及它們通常的動態效果)。 – leftclickben 2013-04-30 09:06:25