强制浏览器缓存图片

6

我正在生成图片,并希望浏览器永久缓存它们,但实际上浏览器根本不缓存它们。 这是我的PHP代码:


header('Content-type:'.$file->content_type);
header('Expires: Thu, 15 Apr '.(date('Y')+10).' 20:00:00 GMT');
header('Content-Disposition: attachment; filename="'.$file->file_name.'"');
echo(file_get_contents($model_files->files_path.$file->md5.$model_files->seprator.$file->file_name));

以下是我在浏览器中持续收到的响应头。

Date:            Thu, 02 Jun 2011 12:56:56 GMT
Server:          Apache mod_fcgid/2.3.6 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
X-Powered-By     PHP/5.2.15
Cache-Control    no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma           no-cache
Expires          Thu, 15 Apr 2021 20:00:00 GMT
Content-Length   321823
Keep-Alive       timeout=5, max=100
Connection       Keep-Alive
Content-Type     image/png

我没有设置日期、缓存控制和Pragma,但仍在响应中得到它们。

我知道我可以覆盖它们,但说实话我不知道应该设置哪些值。


你找到答案了吗? - Yevgeniy Afanasyev
2个回答

2

+1 如果您在此页面上使用session_start,则这很可能是缓存标头的原因。如果您不需要会话,请简单地删除session_start。如果您不使用它,请在问题中提到它,您将需要寻找其他导致这些标头的原因。 - Mel

1

您可以使用:

header( 'Cache-Control: max-age=37739520, public' );

你可以尝试覆盖Pragma,但我认为现在的浏览器如果设置了Cache-Control,就会忽略Pragma。

header( 'Pragma: public' );

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接