快取通常稱為高速緩存,是電腦中的一種不同的記憶體系統,可在短時間內儲存頻繁使用的資料和指令。載入網站時,我們使用的瀏覽器會自動快取一些資源,例如圖像、腳本和樣式表,以便在頁面重新載入時再次使用。這不僅可以縮短網站載入所需的時間,還有助於減少必須透過網路發送的資料量。但瀏覽器儲存的這種快取也有一些缺點。如果快取的資源過時或瀏覽器因使用快取的資源而無法重新載入頁面,則可能會出現問題。為此,我們有時必須清除這些快取。
使用者可以根據需要使用JavaScript來清除瀏覽器的快取。這些描述如下 -
location.reload() 方法 - 可用於重新載入目前頁面並停用快取的有效方法之一。使用者必須給出一個布林值作為參數,並且該值應設為 true。該技術不使用快取版本,而是強制瀏覽器從伺服器重新載入所有資源。
navigator.serviceWorker.getRegistrations() 方法 - 這是使用navigator.serviceWorker 檢索所有Service Worker 註冊後為每個註冊執行unregister 方法的另一種方法物件的getRegistrations()方法。然後瀏覽器將刪除其 HTTP 快取。
caches.open() 和cache.delete() 方法- 此方法使用Cache API 開啟命名緩存,然後使用delete() 方法從快取中刪除特定資源
localStorage.clear() 和 sessionStorage.clear() 方法- 若要從 localStorage 物件中刪除所有鍵值對,使用者可以使用 localStorage.clear() 方法。而sessionStorage.clear()函數可以從sessionStorage物件中刪除所有鍵值對。
當布林參數設定為 true 時,location.reload() 方法將不會快取目前頁面,而是會重新載入它。如果指定 true 作為參數,瀏覽器將直接從伺服器下載所有資源(包括圖片和腳本),而不是使用快取的副本。
location.reload(true);
在上面的語法中,location是JavaScript的全域對象,重載location的方法。
在這個範例中,我們使用 location.reload() 方法透過 JavaScript 清除快取記憶體。我們使用了「清除快取」按鈕並將其與點擊事件相關聯。點選事件處理程序使用參數 true 執行 location.reload() 方法。每當使用者點擊按鈕時,JavaScript 都會強制瀏覽器重新載入沒有快取檔案的網頁。
<html> <body> <h2>Clearing <i> cache memory </i> using JavaScript</h2> <div> <img id = "myImage" style = "height: 200px" src ="https://www.tutorialspoint.com/javascript/images/javascript.jpg"/> </div> <button onclick = "clearCache()">Clear cache</button> <div id = "root" style="padding: 10px; background: #bdf0b8"></div> <script> let root = document.getElementById('root') function clearCache() { root.innerHTML += 'Cache cleared using location.reload(true)' windows.location.reload(true) } </script> </body> </html>
網頁顯示此訊息並快速重新載入最新文件。
在JavaScript 中,navigator.serviceWorker.getRegistrations() 方法是使用者可以透過登出所有服務工作執行緒註冊來清除快取記憶體的第二種方法,navigator.serviceWorker.getRegistrations( ) 方法可以用來清空瀏覽器的HTTP快取。一種類型的 Web Worker 稱為 Service Worker,用於在背景執行大量進程,例如快取資源。瀏覽器必須透過停用所有 Service Worker 註冊來清除其 HTTP 快取。
if ('serviceWorker' in navigator) { navigator.serviceWorker.getRegistrations() .then(function(registrations) { for(let registration of registrations) { registration.unregister(); } }); }
在上面的語法中,我們檢查「serviceWorker」在導航器物件中是否可用。然後,我們使用 navigator.serviceWorker.getRegistrations() 和 registration.unregister() 方法取消註冊 Service Worker。
在此範例中,我們透過使用 JavaScript 取消註冊 Service Worker 來清除快取。我們使用了「清除快取」按鈕並將其與點擊事件相關聯。按一下事件處理程序執行取消註冊 Service Worker 的函數。 navigator.serviceWorker.getRegistrations() 和 registration.unregister() 方法用於取消註冊 Service Worker。登出後,我們在網頁上顯示一則訊息。
<html> <body> <h2>Clearing <i>cache memory</i> using JavaScript</h2> <div> <img id = "myImage" style = "height: 100px" src ="https://www.tutorialspoint.com/images/logo.png" /> </div> <button onclick = "clearCache()">Clear cache</button> <div id = "root" style = "padding: 10px; background: #b8f0ea"></div> <script> let root = document.getElementById('root') function clearCache() { root.innerHTML = 'Cache cleared using navigator.serviceWorker.getRegistrations()' if ('serviceWorker' in navigator) { navigator.serviceWorker .getRegistrations() .then(function (registrations) { for (let registration of registrations) { registration.unregister() } }) } } </script> </body> </html>
清除快取是最佳實踐,但有時也可能會影響網頁的效能,因為必須重新取得所有檔案。 JavaScript 具有清除快取的能力,可依需求使用。
以上是如何使用 JavaScript 清除快取?的詳細內容。更多資訊請關注PHP中文網其他相關文章!