PHP或Apache是否缓存下载的图像?

PHP或Apache是否缓存下载的图像?,php,apache,gd,Php,Apache,Gd,问题 使用PHP在图像更改前后使用相同的URL下载远程图像,即使源不同,也会下载相同的照片。正在缓存图像的某个位置 问题不是浏览器缓存,因为在通过FTP复制后,我直接通过windows资源管理器查看照片 示例 下午1:00:下载照片URL A->下载照片A 下午1:30:照片A更改为照片B,但照片URL保持不变 下午2:00:再次下载照片URL A->下载照片A(但应为照片B) 我的下载脚本 function resampimagejpg( $forcedwidth, $forcedheight

问题

使用PHP在图像更改前后使用相同的URL下载远程图像,即使源不同,也会下载相同的照片。正在缓存图像的某个位置

问题不是浏览器缓存,因为在通过FTP复制后,我直接通过windows资源管理器查看照片

示例

下午1:00:下载照片URL A->下载照片A

下午1:30:照片A更改为照片B,但照片URL保持不变

下午2:00:再次下载照片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;
}
}

Apache可以缓存映像,这取决于设置。这同样适用于浏览器

绕过特定资产缓存的最简单方法是在末尾添加(合理地…)唯一查询字符串,例如时间戳:

// load image always, assuming output to html
<img src="/path/to/image.jpg?<?php echo time(); ?>">
//始终加载图像,假设输出为html
">

请注意,
time()
不是唯一的,它有效地将缓存限制为1秒…

Apache可以缓存图像,这取决于设置。这同样适用于浏览器

绕过特定资产缓存的最简单方法是在末尾添加(合理地…)唯一查询字符串,例如时间戳:

// load image always, assuming output to html
<img src="/path/to/image.jpg?<?php echo time(); ?>">
//始终加载图像,假设输出为html
">

请注意,
time()
不是唯一的,它有效地将缓存限制为1秒…

什么是“我正在直接查看照片”的意思?Apache可以缓存图像,这取决于设置。这同样适用于浏览器。@arkascha-我已通过FTP将照片复制到本地计算机,并通过Windows资源管理器打开它。@jeroen是否在运行时禁用此功能?什么是“我正在直接查看照片”的意思?Apache可以缓存图像,这取决于设置。这同样适用于浏览器。@arkascha-我已通过FTP将照片复制到本地计算机,并通过Windows资源管理器打开它。@jeroen是否在运行时禁用此功能?这解决了我的问题,但我从未找到Apache缓存图像的位置。@BDS1400您可以检查httpd.conf文件并查找(例如…)
ExpiresDefault
,可能位于
FilesMatch
部分。还有其他地方和方法可以设置它。这解决了我的问题,但我从未找到Apache缓存图像的位置。@BDS1400您可以检查httpd.conf文件并查找(例如…
ExpiresDefault
,可能在
FilesMatch
部分。还有其他可以设置的地方和方法。