【问题标题】:All refreshes to be hard refreshes所有刷新都是硬刷新
【发布时间】:2013-05-10 14:56:29
【问题描述】:

我正在处理一个旧版网页,该网页只有在用户刷新时才会在 Chrome 中中断布局。所以,我注意到,如果我按住 shift+refresh,它会在用户下次刷新时正确加载 UI。这是一个不想花太多时间的快速错误。这是我到目前为止所拥有的:

 var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;

 if( is_chrome && document.refresh.visited.value == "" ){
   document.refresh.visited.value = "1";
 }
 else{
  location.reload(true);
 }

我还有一个隐藏输入,页面顶部带有 value=""。我只是希望能够在他们第二次以及之后的每次访问此页面时进行硬刷新。

【问题讨论】:

  • 听起来像是缓存问题,但我并不完全清楚你在问什么。
  • 那你现在有什么问题? location.reload(true) 是否符合您的预期?
  • 如果我不清楚,这是一个缓存问题。 shift+f5 后 u/i 恢复正常。 Location.reload(true) 在这种情况下不断重新加载。
  • 您的代码可以为 Internet Explorer 无限重新加载。这是个好主意 :)
  • 尝试在 JavaScript 级别解决这个问题对我来说似乎很奇怪。您能否使用适当的过期标头为所有需要刷新的资产提供服务?

标签: javascript


【解决方案1】:

尝试添加此功能:

function getParameter(paramName) {
  var searchString = window.location.search.substring(1),
      i, val, params = searchString.split("&");

  for (i=0;i<params.length;i++) {
    val = params[i].split("=");
    if (val[0] == paramName) {
      return unescape(val[1]);
    }
  }
  return null;
}

然后使用:

window.location = 'yourPage.html?reloadMe=true';

所以你的代码是:

var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
var reload = true;
if(getParameter("reloadMe")=="true"){
    reload = false;
}

if( is_chrome && reload){
    window.location = 'yourPage.html?reloadMe=true';
}

我不知道这是否有助于解决您的缓存问题,但它会阻止页面一次又一次地重新加载。

【讨论】:

  • 此代码适用于空白页。但是,不知何故,我的问题似乎集中在右侧的 iframe 上,这导致某些 css 类在刷新时无法正确显示。有用的解决方案。我会继续挖掘。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-23
  • 2016-09-16
  • 2011-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多