location和location.href跳轉url的區別
阿新 • • 發佈:2019-02-07
使用 location = url 跳轉,如果本地之前已經載入過該頁面並有快取,那麼會直接讀取本地的快取,快取機制是由本地瀏覽器設定決定的。狀態碼為: 200 OK (from cache) 。
使用 location.href = url 跳轉,資源的快取型別是根據伺服器快取配置決定的,都會向服務端發起請求,狀態碼會有兩種情況: 200 OK 和 304 Not Modified 。前者表示該頁面是從服務端重新載入的,後者表示從HTTP 頭部的 If-Modified-Since 來判斷該資源在伺服器端是否有改變,如果沒有則從本地快取中載入,如果有則重新載入。
判斷方式為:把瀏覽器端快取頁面的最後修改時間放到請求頭的 If-Modified-Since
關於 location.reload 重新載入的快取機制和 location.href 類似,區別在於如果傳入的引數 true ,如: location.reload(true) ,這會強制從伺服器重新載入該資源。但這在部分瀏覽器裡,有相容的差異,如果不生效,可以採用萬能的帶時間戳方式解決: location.reload(location.href + '?t=timeStamp')