2011-08-20 86 views
3

我正在構建一個PHP腳本來寫入背景圖像的文本。 我使用GD功能如imagecopy(), imagejpeg(), imagedestroy()合併保存文本圖像和背景圖像。一切都很完美。表單提交後,新圖像將保存在背景圖像的相同文件名中,等等頁面重新加載時,編輯後的圖像不會顯示在瀏覽器上。它需要我使用Ctrl + F5(在Windows上)刷新頁面以加載編輯後的圖像。任何人都可以幫助我如何清除緩存?圖像緩存將不會顯示新的編輯圖像

+0

「誰能幫助我如何清除緩存?」 - 這是什麼意思? –

回答

4

只需添加?V =什麼背景路徑每次你編輯你的背景圖片,這將迫使刷新

+0

我不是從PHP加載圖像。在HTML頁面加載BG圖像(使用img標籤),讓用戶在BG圖像上添加文本(圖像文本),並使用php合併並保存圖像。保存後重新加載頁面,它顯示舊的未編輯的BG圖像,直到我按Ctrl + F5 – devdarsh

+1

啊這一個。只需在每次編輯背景圖像時添加?v =東西到bgpath,它會強制刷新 – genesis

+0

啊!那樣做了。感謝您的提示雅。 – devdarsh

1

要妥善處理圖像緩存,你可以在你的Apache配置或htaccess的編寫規則或者...或者您可以創建簡單的「圖像提供商」,有點像......

public function img($imgfile = '') 
{ 
    $imgfile = $_GET['q']; 
    $age = 60*60*24*31; 
    $file = $_SERVER['DOCUMENT_ROOT'].'/'.$imgfile; 

    if (! file_exists($file)) 
    { 
     header('HTTP/1.0 404 Not Found'); 
    } 
    else 
    { 
     $last_modified = filemtime($file); 

     // Check for cached version 
     if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) OR isset($_SERVER['HTTP_IF_NONE_MATCH'])) 
     { 
      if ($_SERVER['HTTP_IF_MODIFIED_SINCE'] == gmdate('D, d M Y H:i:s \G\M\T', $last_modified)) 
      { 
       header('HTTP/1.0 304 Not Modified'); 
       exit; 
      } 
     } 
     if(strpos($imgfile,'.png') !== FALSE) 
     { 
      Header('Content-Type: image/png'); 
     } 
     elseif(strpos($imgfile,'.jpg') !== FALSE || strpos($img_file,'.jpeg') !== FALSE) 
     { 
      Header('Content-Type: image/jpg'); 
     } 
     elseif(strpos($img_file,'.gif') !== FALSE) 
     { 
      Header('Content-Type: image/gif') 
     } 

     Header('Last-Modified : '.gmdate('D, d M Y H:i:s \G\M\T', $last_modified)); 
     Header('Cache-Control : max-age='.$age.', must-revalidate'); 
     Header('Expires : '.gmdate('D, d M Y H:i:s \G\M\T', $last_modified + $age)); 
     echo file_get_contents($file); 
} 

然後你可以使用在你的形象標籤,像<img src="provider.php?q=foo.jpg" alt="Foo" />