【问题标题】:Force reload images (in img) on back button press按下后退按钮时强制重新加载图像(在 img 中)
【发布时间】:2014-08-19 09:49:49
【问题描述】:

有一个博客,我可以在其中发布图片和链接,无需脚本。我仍然想要动态内容。

我的想法:没有缓存等标头的图像由我自己的服务器端 php 脚本动态生成。此图像链接到我服务器上的一个页面,该页面设置 cookie 并执行 javascript history.back()。那么下次下载图片时,就是不同的图片了。

问题是,按下后退按钮后,我无法让浏览器再次下载图像...

我设置了以下标题:

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1.
header('Pragma: no-cache'); // HTTP 1.0.
header('Expires: 0'); // Proxies.

由于某种原因,如果图像在标签内,则返回时会从缓存中加载旧版本。

另外我在第二页包含了图片,所以浏览器甚至下载了新版本的图片,但是当我按下后退按钮时,我仍然看到旧版本......

如何强制浏览器重新下载图片?

【问题讨论】:

  • 您正在使用桌面浏览器,对吧?后退按钮不是安卓的,对吧?
  • 是的,桌面浏览器有问题,ff,chrome,也许还有 ie,不需要非常广泛的支持 :)

标签: caching back no-cache


【解决方案1】:

一种方法是在图像源末尾附加一个数字:

<img src="image.jpg?1" />

如果您的最后一张同名图片是image.jpg,那么您的号码是?将强制浏览器下载图片

所以如果你最后一张同名的图片是:

<img src="image.jpg?1" />

你必须把它改成

<img src="image.jpg?2" />

你可以有一个随机生成器编号,并把它放在src的末尾,这样每次你的浏览器开始下载你的图片时

【讨论】:

  • 我无法动态控制img标签,博客上没有脚本...我必须事先写好img标签,然后我希望能够改变,标签指向什么
  • 你看到这个链接了吗? (stackoverflow.com/questions/8485886/…)
  • 嗯,这似乎是关于另一种问题,不知道它对我有什么帮助
  • 您是否尝试过使用 PHP 输出内容类型? header('Content-Type: image/jpeg'); 使用 PHP 函数输出您的图像。像imagejpeg 这样的函数。你可以使用SimpleImage,它在https://gist.github.com/miguelxt/908143中可用
  • 其实我是用php预处理输出的svg图片进行测试的(svg基本上是xml),所以我确实是从php输出了图片,用content-type设置为image,"图片/svg+xml"
猜你喜欢
  • 2012-02-22
  • 2015-05-20
  • 2021-07-01
  • 2016-03-18
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 2016-06-05
  • 2015-07-15
相关资源
最近更新 更多