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

相關文章
相關標籤/搜索