2015-02-05 58 views
0

我正在建立一個CMS,允許更改主頁上的一些圖片橫幅。我遇到的麻煩是圖像被緩存(通過瀏覽器?),並且在頁面刷新之前不會顯示。這對於管理頁面(顯示當前圖像)是正確的,並且訪問將圖像顯示給普通頁面訪問者的「主頁」。上傳的圖片不更改,不刷新

我沒有精確計時,但即使打開新選項卡並訪問了URL,這仍是持久的。只有刷新頁面後纔會更改。

對於它的價值,這是我用來更新圖片代碼:

$asset = 'homepage_'.Input::get('asset').'.jpg'; 
    File::delete(public_path().'/img/'.$asset); 

    $file = Input::file('upload'); 
    $file->move(public_path() .'/img/', $asset); 

有沒有一種方法,這樣,當它改變時,管理員,我可以告訴服務器「刷新」的形象不需要刷新頁面?

回答

0

在上傳時重命名圖像可能會有所幫助,具體取決於實際緩存的內容。無論如何,您可能想要以某種方式修改文件名。

如果你已經這樣做了,請看看響應標題,看看你是否可以改變那裏的東西。

0

如果是緩存問題;

附加參數的URL

http://localhost/uploads/myimage.jpg?id=11644477200

在你的代碼

;

echo $image . "?id=". time();

-1

編輯:找到一個妥善的解決辦法。

你想添加一個變量到你的圖片網址,這將是最後修改時間爲int。你這樣做:

define("SITE_URL","http://".$_SERVER["HTTP_HOST"]."/"); 
define ('SITE_ROOT', realpath(dirname(__FILE__))); 

$fmt = filemtime (SITE_ROOT ."/img/imagename.jpg"); 
echo "<img class='whatever' src='". SITE_URL ."img/imagename.jpg?".$fmt."' />"; 
+0

清除'stat()'函數緩存與瀏覽器緩存沒有任何關係。 – 2017-02-20 21:23:16

+0

你說得對。我現在找到了一個合適的解決方案,但是在獲取時顯示的image.jpg?filemtime(image.jpg) – rufoDev 2017-02-21 18:22:35