我使用 PHP 库生成一些图像。 有时浏览器不会加载新生成的文件。 如何仅对我动态创建的图像禁用缓存? 注意:随着时间的推移,我必须为创建的图像使用相同的名称。 原文由 dole doug 发布,翻译遵循 CC BY-SA 4.0 许可协议
解决此问题的一个常见且简单的解决方案(感觉像是 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 许可协议
解决此问题的一个常见且简单的解决方案(感觉像是 hack,但相当便携)是将随机生成的查询字符串添加到动态图像的每个请求中。
所以,例如 -
会成为
或者
从网络服务器的角度来看,访问了相同的文件,但从浏览器的角度来看,无法执行缓存。
随机数生成既可以在服务页面时发生在服务器上(只要确保页面本身没有被缓存…),也可以发生在客户端(使用 JavaScript)。
您将需要验证您的 Web 服务器是否可以应对此技巧。