1. 程式人生 > >location和location.href跳轉url的區別

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')

 。類似於採用按鍵方式的強制重新整理。