【问题标题】:window.open cache problemwindow.open 缓存问题
【发布时间】:2011-04-07 07:55:39
【问题描述】:

我在一个函数中使用 window.open 来打开一个网页,该网页显示帮助 当前页面。

页面 URL 存储在 DB 中,部分页面需要认证。

对于这些页面,我们第一次调用它们时用户必须进行身份验证,但如果他关闭页面并再次打开它,则显示的是缓存页面。

我已经尝试将时间添加到 url,以便不显示缓存页面

var oDate = new Date();
window.open(url+oDate.getTime());

但是浏览器仍然显示缓存的url。

有解决这个问题的办法吗?

谢谢。

【问题讨论】:

  • 真的应该是window.open(url + '?x=' + new Date().getTime()),除非有其他参数;关键是它会破坏 URL,只是把日期放在最后。
  • 这就是我实际上正在做的,这是一个失踪

标签: javascript asp.net html


【解决方案1】:

您可能想尝试将元标记显式添加到您的页面:

<!-- HTTP 1.1 -->
<meta http-equiv="Cache-Control" content="no-store"/>
<!-- HTTP 1.0 -->
<meta http-equiv="Pragma" content="no-cache"/>
<!-- Prevents caching at the Proxy Server -->
<meta http-equiv="Expires" content="0"/>

【讨论】:

    【解决方案2】:

    试试这个,如果你想打开一个新页面,没有缓存问题......它似乎对我有用:

    function openGoogleLinkWithDummy()
        {
            var randNumber = Math.floor(Math.random()*99);
            var str="How are you doing today? " + randNumber;
            window.open("http://www.google.com?q=cat&" + randNumber);
        }
    

    如果您想加载外部 javascript 文件(例如,从服务器端代码,您将随机数附加到 zzz.js 文件的名称,它看起来像 zzz.js?v=123),它肯定可以工作但是这个技巧也可以解决您的问题。

    每次点击链接时浏览器都会看到不同的“版本”,因为末尾附加了一个虚拟数字。

    再见!

    【讨论】:

      【解决方案3】:

      根据需要设置clearcache或clearsessioncache等于yes:

      window.open(url, '_blank', 'location=yes', 'clearcache=yes');

      【讨论】:

      • clearcache 和 clearsessioncache 是 Android/iOS WebView 特定的。
      猜你喜欢
      • 2014-12-30
      • 1970-01-01
      • 2011-08-12
      • 2012-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多