【问题标题】:JavaScript file being cached when back button pressed按下后退按钮时缓存 JavaScript 文件
【发布时间】:2012-03-31 02:43:54
【问题描述】:

我正在设计一个 JavaScript 小部件,它将显示一个带有 php 创建的随机广告的 iframe。

每次刷新页面时,都会创建一组新的随机广告。

当用户点击广告时,他会被重定向到广告所代表的网站。

当用户使用后退按钮时会出现问题。

由于后退按钮只是调出一个缓存页面,因此会出现相同的广告,这是我不想要的。

由于将展示广告的网站不属于我,因此我无权访问头文件。

即使使用 JavaScript 重新加载功能,仍会缓存 javascript 文件。

任何帮助将不胜感激。

【问题讨论】:

  • 可能在服务器端激活了某种缓存?

标签: php javascript html


【解决方案1】:

问题在于 Javascript 的缓存是由浏览器控制的客户端机制。因此,一种方法是使用 no-cache 标头告诉浏览器不要缓存:

<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>

另一种选择是通过使用 Javascript 在末尾添加随机数来使请求每次看起来都是唯一的:

var img.src = 'www.mysite.com/ads.php'+'?'+Math.random()*Math.random();
return $(img).load(function()
{
   alert('completed!');
});

如果你使用 jQuery,最后的选择:

$.ajax({
   url: 'test.html',
   cache: false,
   success: function(html){
     $('#results').append(html);
   }
});

【讨论】:

  • 这些都不行。我无权访问 ajax 或标题,因为这不在我自己的网站上。而且我已经有 500 个网站在使用该脚本,所以我现在无法更改它的调用方式。
  • 动态添加标题会导致浏览器看到并尊重它们吗?
【解决方案2】:

如果可能,请不要等待用户按下后退按钮。在他离开您的网站之前切换广告。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 2013-10-11
    • 2013-09-13
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 2013-07-11
    相关资源
    最近更新 更多