一尘不染

如何使用PHP使浏览器缓存图像?

html

我对如何缓存图像是全新的。

我使用PHP输出图库中的所有图像,并希望已显示的图像由浏览器缓存,因此PHP脚本不必再次输出相同的图像。我想要的只是图像显示得更快。

调用图像时,我喜欢这样:

<img src="showImage.php?id=601">

showImage.php-file做:

$id = (int) $_GET['id'];
$resultat = mysql_query("
    SELECT filename, id
    FROM Media 
    WHERE id = $id
");
$data = mysql_fetch_assoc($resultat);

...

//Only if the user are logged in
if(isset($_SESSION['user'])){
    header("Content-Type: image/jpeg");

    //$data['filename'] can be = dsSGKLMsgKkD3325J.jpg
    echo(file_get_contents("images/".$data['filename']."")); 
}

阅读 313

收藏
2020-05-10

共1个答案

一尘不染

如果您使用php在输出消息之前检查用户是否已登录,则您不希望浏览器缓存图像。

缓存的全部目的是调用服务器一次,然后再也不调用它。如果浏览器缓存图像,它将不会调用服务器,并且脚本也不会运行。取而代之的是,即使用户不再登录,浏览器也会从缓存中提取图像并显示它。这可能是一个很大的安全漏洞。

2020-05-10