2011-08-20 7 views
3

배경 이미지 위에 텍스트를 쓰는 PHP 스크립트를 작성하고 있습니다. imagecopy(), imagejpeg(), imagedestroy()과 같은 GD 함수를 사용하여 텍스트 이미지와 배경 이미지를 병합했습니다. 모든 것이 완벽하게 작동합니다. 양식을 제출하면 새 이미지가 배경 이미지의 동일한 파일 이름에 저장되므로 페이지를 다시로드해도 편집 한 이미지가 브라우저에 표시되지 않습니다. 편집 된 이미지를로드하려면 ctrl + F5 (창)를 사용하여 페이지를 새로 고침해야합니다. 아무도 그 캐시를 지우는 법을 도와 줄 수 있습니까?이미지 캐시에 새 편집 이미지가 표시되지 않습니다.

+0

같은 이미지 태그에 그것을 사용할 수 있습니다 ... 간단한 "이미지 제공"같은 뭔가를 만들 수 있습니다 "사람이 어떻게 캐시를 지우려면 좀 도와 줄래?" 이게 무슨 뜻이야? –

답변

4

단지 V = 배경 경로에 뭔가 매번 당신은 당신의 배경 이미지를 편집, 그것은 새로 고침

+0

PHP에서 이미지를로드하지 않습니다. BG 이미지를 HTML 페이지 (img 태그 사용)에로드하면 사용자가 BG 이미지 위에 텍스트 (이미지 텍스트)를 추가하고 php를 사용하여 이미지를 병합하고 저장하게 할 수 있습니다. 저장 후 페이지를 다시 불러오고 Ctrl + F5를 누르기 전까지는 편집되지 않은 이전 BG 이미지가 표시됩니다. – devdarsh

+1

아. ? v = 배경을 편집 할 때마다 bgpath에 무언가를 추가하면 새로 고침이됩니다. – genesis

+0

아! 그랬어. 팁 주셔서 고마워요. – devdarsh

1

제대로 이미지 캐싱을 처리하기 위해, 당신은 당신의 아파치 구성 또는 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" />

관련 문제