禁用某些图像的缓存

新手上路,请多包涵

我使用 PHP 库生成一些图像。

有时浏览器不会加载新生成的文件。

如何仅对我动态创建的图像禁用缓存?

注意:随着时间的推移,我必须为创建的图像使用相同的名称。

原文由 dole doug 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 527
2 个回答

解决此问题的一个常见且简单的解决方案(感觉像是 hack,但相当便携)是将随机生成的查询字符串添加到动态图像的每个请求中。

所以,例如 -

 <img src="image.png" />

会成为

<img src="image.png?dummy=8484744" />

或者

<img src="image.png?dummy=371662" />

从网络服务器的角度来看,访问了相同的文件,但从浏览器的角度来看,无法执行缓存。

随机数生成既可以在服务页面时发生在服务器上(只要确保页面本身没有被缓存…),也可以发生在客户端(使用 JavaScript)。

您将需要验证您的 Web 服务器是否可以应对此技巧。

原文由 Hexagon 发布,翻译遵循 CC BY-SA 2.5 许可协议

浏览器缓存策略可以由 HTTP 标头控制。请记住,它们只是一个提示,真的。由于浏览器在此(和任何其他)字段中非常不一致,因此您需要多个标头才能在一系列浏览器上获得所需的效果。

 header ("Pragma-directive: no-cache");
header ("Cache-directive: no-cache");
header ("Cache-control: no-cache");
header ("Pragma: no-cache");
header ("Expires: 0");

原文由 lhunath 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题