如果有可用的更新图像,如何防止旧图像出现在页面重新加载

时间:2012-06-09 11:08:42

标签: php javascript jquery image refresh

我不是一个非常优秀的网络开发人员,我的知识只不过是PHP和javascript / jquery的基本知识,所以我试图解释这个问题。

我经常不得不更新我网站上的主要图像,用户将转到该网站,但图像将不是更新版本,除非他们手动点击刷新。即使我把“请点击刷新以查看更新的图像”,用户也会忽略这一点,我必须通过电子邮件发送它们以点击刷新按钮。我已尝试使用像这样的

将初始index.html重新加载到实际网站

最初的index.html:

document.location.href='index2.php?code=reload_page'

然后在index2.php:

$the_code = $_GET['code'];

  if($the_code == "reload_page")
    {
     $page = $_SERVER['PHP_SELF'];
     $sec = "1";
     header("Refresh: $sec; url=$page");
    }
  else
    {
      //load page regular
    }

我试过这样,但是它没有用,在你按下刷新按钮之前仍然有旧图像。使用PHP或javascript / jquery完成此任何其他方法? 谢谢你的时间 -Mike

3 个答案:

答案 0 :(得分:3)

图像未刷新的问题可能是网页浏览器或服务器代理等中的缓存问题。这是配置问题,可能不依赖于您。绕过这个的简单技巧是为img url添加时间戳。每次在index.php中重新生成内容时,只需在图像中添加一些查询字符串,如下所示:

<?php
echo '<img src="my_image.png?ts='.time().'" />';
?>

它会欺骗您的浏览器和代理,因为它是另一个图像并阻止缓存。

答案 1 :(得分:1)

您可以使用计时器重新加载图像,并通过其他页面的AJAX请求获取它们:

setInterval(function(){ 
  $.ajax({
    url: 'index2.php'
  }).done(function ( data ) {
    $('#image-div').html(data);
  }); 
}, 10000); // wait 10 seconds

查看jQuery.ajax

答案 2 :(得分:1)

将以下内容放入页面的head部分,这将每5秒重新加载一次内容。

<meta http-equiv="refresh" content="5">

如果浏览器仍然缓存图像,因为网址未更改,则在图像网址的末尾放置一个随机查询字符串。你可以使用时间戳。

<img src="image.jpg?<?php echo time(); ?>">