gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-28 23:44:48 25 4
gpt4 key购买 nike

我对如何缓存图像完全陌生。

我用 PHP 输出画廊中的所有图像,并希望浏览器缓存已经显示的图像,这样 PHP 脚本就不必再次输出相同的图像。我只想让图像更快地显示出来。

调用图像时我喜欢这样:

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

showImage.php-文件做:

$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'].""));
}

最佳答案

首先,如果您正在使用 session ,则必须禁用 session_cache_limiter (通过将其设置为 nonepublic)。它发送的 header 对缓存非常不利。

session_cache_limiter('none');

然后发送 Cache-Control: max-age=number_of_seconds 和可选的等效 Expires: header 。

header('Cache-control: max-age='.(60*60*24*365));
header('Expires: '.gmdate(DATE_RFC1123,time()+60*60*24*365));

为了获得最佳的可缓存性,如果浏览器发送匹配的 If-Modified-Since header ,请发送 Last-Modified header 并回复状态 304 和空正文。

header('Last-Modified: '.gmdate(DATE_RFC1123,filemtime($path_to_image)));

为简洁起见,我在这里有点作弊(该示例未验证日期),但只要您不介意浏览器永远保留缓存文件,它就有效:

if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
header('HTTP/1.1 304 Not Modified');
die();
}

关于php - 如何使用 PHP 让浏览器缓存图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1385964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com