【发布时间】:2023-04-05 05:27:01
【问题描述】:
似乎在某些测试期间,Firefox 不会缓存动态生成(或从缓存服务器端加载)的图像。
我尝试使用标头启用缓存:
$expires = 60*60*24*14;
header("Pragma: public");
header("Cache-Control: maxage=".$expires);
header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$expires) . ' GMT');
但无济于事。我仍然得到“200 OK”而不是“304 Not Modified”。
使用 Stackoverflow 上的搜索寻求答案,我发现有人暗示他们宁愿将浏览器直接重新定位到图像。
喜欢:
header("Location: /img/generated/whatever.png");
我不喜欢这种方法,因为它会导致两个请求。
谁能帮助我,让我知道如何让浏览器缓存这些文件?
请求 URL 未更改,并且不包含任何种子或时间戳。
【问题讨论】:
-
这是
max-age而不是maxage。 -
感谢您的观察!我改变了它,但不幸的是我仍然得到相同的结果。
-
至于 304 部分:您是否实现了适当的缓存机制?
-
请求中有什么内容?我希望有一个“if-not-modified-since”标头。在这种情况下,由服务器/脚本来确定图像自那时以来没有更改并返回 304 Not Modified 而不是返回 200 OK 和图像。
-
@Gumbo 你的意思是什么缓存机制?我必须实施什么?通常情况下浏览器不会自己缓存图像。在任何情况下,我都尝试使用如上所示的标题进行详细说明。对 Eddy:不确定,但图片在 中正常使用,所以我希望浏览器能够发出正确的请求。无论如何,我查看了它并在请求标头中找到了这个:Cache-Control max-age=0 - 这可能是问题吗?