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') 。類似於採用按鍵方式的強制刷新。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章