Javascript 如何完全防止通过HTTP服务的资源的映像缓存

Javascript 如何完全防止通过HTTP服务的资源的映像缓存,javascript,image,http,caching,Javascript,Image,Http,Caching,在浏览器的客户端项目中,我为新图像动态创建一个-属性 问题是,旧的第一个映像仍保留在缓存中,并且不会反映进一步的更改 我当然尝试过通过常规方式防止缓存: 每次重新加载时,我都会更改源图像的URL,方法是向URL添加一个参数并将其值设置为当前时间。我检查确认,是的,每次加载实际上都会从服务器请求不同的URL,但图像仍然作为缓存版本提供。 我将返回各种头以防止缓存。以下是响应头的外观: Access-Control-Allow-Headers: origin, x-requested-with, c

在浏览器的客户端项目中,我为新图像动态创建一个-属性

问题是,旧的第一个映像仍保留在缓存中,并且不会反映进一步的更改

我当然尝试过通过常规方式防止缓存:

每次重新加载时,我都会更改源图像的URL,方法是向URL添加一个参数并将其值设置为当前时间。我检查确认,是的,每次加载实际上都会从服务器请求不同的URL,但图像仍然作为缓存版本提供。 我将返回各种头以防止缓存。以下是响应头的外观:

Access-Control-Allow-Headers: origin, x-requested-with, content-type
Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS
Cache-control: no-cache, no-store, must-revalidate
Connection: Keep-Alive
Content-Length: 48503
Content-Type: image/png
Date: Wed, 05 Sep 2018 15:51:08 GMT
Expires: 0
Keep-Alive: timeout=5, max=100
Pragma: no-cache
Server: Apache/2.4.25 (Debian)
Set-Cookie: locale=de; Domain=c.test; Path=/; Expires=Mon, 04 Mar 2019 15:51:08 GMT
Set-Cookie: session_id=563bbb7d216d4edf7aed7e38427e15aec584414a605df6d2481223f840bf13f7; Domain=c.test; Path=/
请求的URL如下所示:

/event/590c713b5fd3197a0a16c851/reg/data/streamThumbnail?file=93c180702fd9926d40f77dd19ae48cee.crop.jpg&t=0478533001536162394&dimensions=130x181
不幸的是,我别无选择。我试着通过在一个新选项卡中直接加载镜像src来调试它,在服务器上进行更改,然后重新加载,但是镜像保持不变,即使它在服务器上根本不存在了

有人能给我指一下正确的方向吗?有人知道发生了什么或我错过了什么吗

很抱歉,我不能提供任何测试出口,所以我想这取决于那些自己遇到这个问题的人


谢谢。

通过添加url查询,您可以在客户端轻松完成此操作。i、 e

<img src="folder/my-image.jpg?cache=1">
我相信一些旧版本的Internet Explorer有大小限制

编辑2: 如果您确实在寻找HTTP头选项,您是否也尝试了Expires值。如果我记得,您必须使用负值,即Expires:-1。您还可以使用其他一些缓存控件,如缓存控件:max age=0或缓存控件:must revalidate

编辑3: 好的,您也尝试了Expires,但是您使用的是零。您需要将其更改为-1。详细说明如下:


试过这个吗?应该可以在.htaccess、httpd.conf和VirtualHost中使用

<filesMatch "\.(html|htm|js|css)$">
  FileETag None
  <ifModule mod_headers.c>
     Header unset ETag
     Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
     Header set Pragma "no-cache"
     Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
  </ifModule>
</filesMatch>

如果您使用的扩展名不是.html,则可以选择为正在检索的模板文件添加扩展名。

是否已清除浏览器缓存并检查是否显示最新图像?如果映像没有更改,这将确认服务器端缓存是问题所在。您确定Apache没有配置为在内存中缓存文件吗?你试过在Apache中完全禁用缓存吗?事实上,没有。在Apache中没有。这是通过VirtualHost配置完成的吗?我一点也不知道,但goggle会帮你的。谢谢,我会看一看。。。不知道我的心思在哪里。希望这里有些东西对你有用。
<filesMatch "\.(html|htm|js|css)$">
  FileETag None
  <ifModule mod_headers.c>
     Header unset ETag
     Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
     Header set Pragma "no-cache"
     Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
  </ifModule>
</filesMatch>