2012-09-26 55 views
1

問題PHP或Apache緩存是否下載圖像?

使用PHP中使用相同的URL之前,圖像被改變後,下載遠程圖像,下載同一張照片,即使源是不同的。圖像正在被緩存的地方。

這個問題不是瀏覽器緩存,因爲我通過FTP直接通過Windows資源管理器查看照片。

下午1點00:下載圖片URL A - >下載照片甲

下午1:30:照片A變更至照片B,但照片URL保持相同

2 :00pm:再次下載照片URL A - >下載照片A(但應該是照片B)

我的下載腳本

function resampimagejpg($forcedwidth, $forcedheight, $sourcefile, $destfile) 
{ 

$fw = $forcedwidth; 
$fh = $forcedheight; 
$is = getimagesize($sourcefile); 
if($is[0] >= $is[1]) 
{ 
    $orientation = 0; 
} 
else 
{ 
    $orientation = 1; 
    $fw = $forcedheight; 
    $fh = $forcedwidth; 
} 
if ($is[0] > $fw || $is[1] > $fh) 
{ 
    if(($is[0] - $fw) >= ($is[1] - $fh)) 
    { 
     $iw = $fw; 
     $ih = ($fw/$is[0]) * $is[1]; 
    } 
    else 
    { 
     $ih = $fh; 
     $iw = ($ih/$is[1]) * $is[0]; 
    } 
    $t = 1; 
} 
else 
{ 
    $iw = $is[0]; 
    $ih = $is[1]; 
    $t = 2; 
} 
if ($t == 1) 
{ 
    $img_src = imagecreatefromjpeg($sourcefile); 
    $img_dst = imagecreatetruecolor($iw, $ih); 
    imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $iw, $ih, $is[0], $is[1]); 
    if(!imagejpeg($img_dst, $destfile, 95)) 
    { 
     exit(); 
    } 
    return true; 
} 
else if ($t == 2) 
{ 
    copy($sourcefile, $destfile); 
    return true; 
} 
} 
+1

什麼是「我在看照片直接」是什麼意思? – arkascha

+0

Apache可以緩存圖像,這取決於設置。這同樣適用於瀏覽器。 – jeroen

+0

@arkascha - 我已經通過FTP將照片複製到本地機器,並通過Windows資源管理器打開它。 – BDS1400

回答

1

Apache可以緩存圖像,這取決於設置。這同樣適用於瀏覽器。

繞過緩存一定資產的最簡單方法,就是在最後加一個(合理...)唯一的查詢字符串,例如時間戳:

// load image always, assuming output to html 
<img src="/path/to/image.jpg?<?php echo time(); ?>"> 

注意time()是不完全獨特的,它有效地限制緩存到1秒...

+0

這解決了我的問題,但我從來沒有弄清楚Apache緩存圖像的位置。 – BDS1400

+0

@ BDS1400您可以檢查httpd.conf文件並查找(例如...)'ExpiresDefault',可能位於'FilesMatch'部分。還有其他地方和方式可以設置。 – jeroen