在不更改图像名称/参数的情况下停止缓存图像

时间:2017-02-15 14:27:27

标签: html image caching query-parameters

注意:这个问题不是类似问题的重复,其中答案要求将javascript / php生成的随机数查询添加到图像名称的末尾。正如我在原帖中所解释的那样,我不能在代码中使用javascript。用户正在执行HTML的一次性副本并将其粘贴到无法运行javascript的位置

我运行一个为用户生成图像文件的网络服务,显示他们在某些地理藏宝目标上的进展(地理藏宝只是一种户外爱好。)图像位于我的服务器上。然后,该服务为用户提供HTML代码以引用图像,他们可以将HTML复制/粘贴到其他网站,例如他们的个人博客或他们在主要地理藏宝网站上的个人资料。

他们的想法是,他们可以定期访问我的网站并生成新的更新图像。图像在服务器上仍具有相同的名称。这样他们以前复制/粘贴的HTML仍然可以工作......它引用相同的图像,但这些图像已经更新。

然而......缓存是一个问题。通常情况下,我会生成新图像,但用户仍会在个人博客上或任何地方看到旧图像,因为旧图像已被缓存。

  • 我可以为用户提供在图像src上添加随机查询参数的HTML代码,但这无济于事,因为他们只复制/粘贴该HTML一次。随机查询参数只会生成一次,在第一次加载后,图像将被缓存,并且不会是新的随机查询参数。
  • 我无法为用户提供包含javascript的HTML代码,以便在每次读取HTML时生成随机查询参数,因为他们正在将此HTML代码复制到通常无法运行脚本的字段中。
  • 我不能尝试禁用缓存,因为他们将此HTML粘贴到其他网站。

我可以做些什么来禁用纯HTML中这些图像的缓存吗?我可以使用任何img属性?解决这个棘手问题的任何想法?

2 个答案:

答案 0 :(得分:0)

您可以设置HTTP标头以防止缓存。

Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0

我相信通过设置元内容也可以实现这一点:

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"/>
<meta http-equiv="Pragma" content="no-cache"/>
<meta http-equiv="Expires" content="0"/>

来源:

Prevent caching of HTML page

How to control web page caching, across all browsers?

答案 1 :(得分:0)

创建

<script> 

ttml在html块中并使用jvascript Math.random()方法创建一个随机数,以便为图像src&#34;上的#34;随机查询参数提供参数。这使得对图像的所有请求都是唯一的,并阻止了缓存。