【问题标题】:Remove cache with javascript使用 javascript 删除缓存
【发布时间】:2013-05-22 04:01:51
【问题描述】:

所以我的 javascript 文件正在被缓存。最初我只是将它们放在这样的脚本标签中:

<script type='text/javascript' src='js/example.js'></script>

现在我的理解是浏览器缓存GET请求是完全可以的。

由于我的应用程序正在开发中,我现在还不能允许这样做。

我对缓存的第二个理解是,如果GET 查询字符串不同,那么它不会将它们视为相同,因此不缓存它们,考虑到这一点,我将其添加到我的页面中:

<script type="text/javascript">
    window.onload = function () {
        var s = document.createElement('script');
        s.type = 'text/javascript';
        s.src = "js/example.js?timestamp=" + new Date().getTime();
        document.body.appendChild(s);
    }
</script>

这会很好地加载文件,如下所示:

<script type="text/javascript" src="js/example.js?timestamp=1369194644133"></script>

但不知何故,这仍然被缓存。

我的浏览器(谷歌浏览器)也禁用了缓存,但它仍在发生。

为了提供我使用 IIS 7.5 的文件,我还禁用了该站点的缓存。

【问题讨论】:

  • 你怎么知道它被缓存了?
  • 因为我通过转到该位置检查了文件并将其与加载的文件进行了比较。
  • 我会使用 fiddler(或类似工具)监控网站,以确保对您的 JS 文件的请求不会发送到您的服务器
  • 您还可以使用浏览器开发人员工具栏的网络选项卡检查响应标头
  • 我确定这只是一个错字,但在您的代码中,您有 s.src = "js/example?timestamp=" + new Date().getTime(); - .js 扩展名在哪里?

标签: javascript caching iis browser-cache


【解决方案1】:

尝试使用 Math.random()

 xhr.open('GET', 'php/response.php?page=' + this.page + '&' + Math.random(), true);

【讨论】:

  • 这与 OP 已经拥有的没有什么不同。这只是每次重新加载时获得不同数字的另一种方式......
猜你喜欢
  • 1970-01-01
  • 2019-06-25
  • 1970-01-01
  • 1970-01-01
  • 2017-06-20
  • 1970-01-01
  • 1970-01-01
  • 2016-01-23
  • 2018-03-01
相关资源
最近更新 更多