1

問題

PHPを使用して、画像が変更される前後に同じURLを使用してリモート画像をダウンロードすると、ソースが異なっていても同じ写真がダウンロードされます。画像がキャッシュされている場所。

FTP経由でコピーした後、Windowsエクスプローラーから直接写真を見ているので、問題はブラウザーのキャッシュではありません。

1:00 pm:写真のURLAをダウンロード->写真Aをダウンロード

1:30 pm:写真Aが写真Bに変更されましたが、写真のURLは同じままです

2:00 pm:写真の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;
}
}
4

1 に答える 1

1

Apacheは、設定に応じて画像をキャッシュできます。同じことがブラウザにも当てはまります。

特定のアセットのキャッシュをバイパスする最も簡単な方法は、タイムスタンプなどの(合理的に...)一意のクエリ文字列を最後に追加することです。

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

正確に一意ではないことに注意してくださいtime()。事実上、キャッシュは1秒に制限されます...

于 2012-09-26T15:06:13.953 に答える