js的location.reload(true)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js的location.reload(true)相关的知识,希望对你有一定的参考价值。

location.reload()意思是从服务器端重新载入页面 ;

location.false(true)意思是从缓存中重新载入。

请问下这两者的区别通俗一点如何理解?看不明白,高手来教教我啊!

浏览器在浏览网页时会把当前页面保存到本地机器上的某个目录里,这个就是缓存了。

从缓存中重新载入 就是 直接使用缓存刷新显示
从服务器端重新载入 就是 无视是否有缓存,重新下载页面内容,并更新缓存
参考技术A   如果该方法没有规定参数,或者参数是 false,它就会用 HTTP 头 If-Modified-Since 来检测服务器上的文档是否已改变。如果文档已改变,reload() 会再次下载该文档。如果文档未改变,则该方法将从缓存中装载文档。这与用户单击浏览器的刷新按钮的效果是完全一样的。
  如果把该方法的参数设置为 true,那么无论文档的最后修改日期是什么,它都会绕过缓存,从服务器上重新下载该文档。这与用户在单击浏览器的刷新按钮时按住 Shift 健的效果是完全一样。

  这与用户在单击浏览器的刷新按钮时按住 Shift 健的效果是完全一样。
  true的效果和 按住shift+f5的效果相同 w3school的解释
参考技术B reload()
方法用于重新加载当前文档。
如果该方法没有规定参数,或者参数是
false,它就会用
http

if-modified-since
来检测服务器上的文档是否已改变。如果文档已改变,reload()
会再次下载该文档。如果文档未改变,则该方法将从缓存中装载文档。这与用户单击浏览器的刷新按钮的效果是完全一样的。
我们都知道客户端浏览器是有缓存的,里面存放之前访问过的一些网页文件。
其实缓存里存储的不只是网页文件,还有服务器发过来的该文件的最后服务器修改时间。
if-modified-since是标准的http请求头标签,在发送http请求时,把浏览器端缓存页面的最后修改时
间一起发到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行比较。
如果时间一致,那么返回http状态码304(不返回文件内容),客户端接到之后,就直接把本地缓存文
件显示到浏览器中。
如果时间不一致,就返回http状态码200和新的文件内容,客户端接到之后,会丢弃旧文件,把新文件
缓存起来,并显示到浏览器中。
我们知道jsp页面最后都必须编译成html文件,你的jsp页面
时间
每次请求的都不一样
,等于修改了文件
所以缓存和服务器的文件的修改时间是不一致的
,就会重新刷新了

在 $state.go 之后执行 $window.location.reload(true)

【中文标题】在 $state.go 之后执行 $window.location.reload(true)【英文标题】:Do $window.location.reload(true) after $state.go 【发布时间】:2015-04-03 14:16:31 【问题描述】:

我正在开发这个 Ionic/Cordova 应用程序,我必须在 $state.go 之后重新加载。我就是这样做的

$state.go('app.menu', , reload: true).then(function()
              $window.location.reload(true);
      );

上面的代码在浏览器上运行良好,当我将它加载到 iPhone 模拟器时出现问题。问题是它没有进入指定状态,即app.menu

但如果我删除$window.location.reload(true);,它确实会进入状态。

你认为是什么问题?

编辑:如果我添加超时,它会起作用,但我不想这样做。像这样

$state.go('app.menu', , reload: false).then(function()
        setTimeout(function() 
          $window.location.reload(true);
        , 500);
      )

【问题讨论】:

你试过 location.reload(true); @ZeeshanHassanMemon 我刚试过,同样的事情正在发生。 你可以尝试通过设置 cache:false like .state('app.menu', cache:false, url: 'you_url_here', @ZeeshanHassanMemon 我应该删除重新加载行吗? 是的,尽量避免以这种方式重新加载,我不知道你的情况是什么,但在单页应用程序中 .reload 应用程序会产生问题 【参考方案1】:

立即使用 $timout。它对我有用。

$timeout(function() 
    $window.location.reload(true);
);

【讨论】:

【参考方案2】:

这对我有用:Source Here。

根据设计,视图被缓存。 在您的状态下尝试 cache: false

$stateProvider.state('myState', 
    cache: false,
    url : '/myUrl',
    templateUrl : 'my-template.html'
)

【讨论】:

以上是关于js的location.reload(true)的主要内容,如果未能解决你的问题,请参考以下文章

js刷新页面 location.reload()

js实现页面跳转,location.href和location.replace和location.reload的区别

loaction.reload(false)和location.reload(true)

js刷新页面

window.location.reload(false);window.location.reload(true);history.Go区别

loaction.reload(false)和location.reload(true)的区别