location和location.href跳转url的区别

Posted James·Von

tags:

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

使用 location = url  跳转,如果本地之前已经载入过该页面并有缓存,那么会直接读取本地的缓存,缓存机制是由本地浏览器设置决定的。状态码为:  200 OK (from cache) 。

 

使用 location.href = url 跳转,资源的缓存类型是根据服务器缓存配置决定的,都会向服务端发起请求,状态码会有两种情况: 200 OK 和  304 Not Modified  。前者表示该页面是从服务端重新载入的,后者表示从HTTP 头部的 If-Modified-Since 来判断该资源在服务器端是否有改变,如果没有则从本地缓存中加载,如果有则重新加载。

 

判断方式为:把浏览器端缓存页面的最后修改时间放到请求头的 If-Modified-Since 中发到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行比较,如果有改变,返回头会带有 Last-Modified 也就是该资源在服务器端的最后修改时间,并返回新的资源;如果没有改变则是上述304的情况。

 

关于 location.reload 重新加载的缓存机制和 location.href 类似,区别在于如果传入的参数 true ,如: location.reload(true) ,这会强制从服务器重新加载该资源。但这在部分浏览器里,有兼容的差异,如果不生效,可以采用万能的带时间戳方式解决:  location.reload(location.href + ‘?t=timeStamp‘) 。类似于采用按键方式的强制刷新。

以上是关于location和location.href跳转url的区别的主要内容,如果未能解决你的问题,请参考以下文章

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

windows.location.href 不能跳转

JavaScript--location.href的跳转

window.location.href 无法跳转

react中为啥不window.location.href来跳转,还要用react-router来跳转

window.location.href/replace/reload()/页面跳转+替换+刷新