簡體   English   中英

我可以從javascript告訴我的頁面是否刷新了嗎?

[英]Can I tell from javascript whether my page was hard refreshed?

我已經放棄了這一點,但我想我會因為好奇而在這里發帖。

我稱之為“硬刷新”的是您在開發過程中執行的Ctrl + RShift + F5 ,以查看您的更改。

這會導致瀏覽器向請求添加Cache-Control: max-age=0標頭, 並為圖像和腳本等添加“子”請求。

如果你正在做你的工作,除了改變的資源外,你將得到304 (好的,請參閱注釋。這是假設其他驗證器基於瀏覽器緩存發送。)

到現在為止還挺好。

問題是我不是直接從頁面加載腳本,而是通過load.js加載腳本,並且瀏覽器在這些請求中是否包含該Cache-Control標頭時不一致。 Chrome根本不會這樣做,Firefox似乎停在了系列的中間。

由於我無法訪問當前請求的標頭,因此無法知道是否應包含該標頭。

結果是,當我更改腳本(除了load.js )之外,硬刷新不能可靠地工作,我必須,例如,清除瀏覽器緩存(這有點沉重)。

有什么想法嗎?

遺憾的是,您無法從JavaScript檢測到硬刷新(無法訪問當前加載頁面的標頭)。

但是,服務器可以從請求標頭中判斷這是否是硬刷新,因此可以選擇合作。 例如,服務器可以在響應中包含自定義<meta>標記,或者向<body>添加一個特殊類,然后您的腳本就可以訪問此信息。

一旦load.js檢測到硬刷新,它就可以通過例如將URL參數附加到請求來將其傳播到依賴腳本(想想"?t=" + timestamp )。

您可以嘗試檢查localStorage。 設置localStorage變量並進行檢查。 如果它在那里,它不是一個硬刷新,否則,它是一個很難刷新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM