Javascript如何取得快取和清除快取API的範例程式碼分享
本篇文章主要介紹了詳解Javascript取得快取和清除快取API,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧
JavaScript ServiceWorker API的好處就是讓web開發人員輕鬆的控制快取。雖然使用ETags等技術也是控制快取的技術,按下使用JavaScript讓程式來控制快取功能更強大,更自由。當然,強大有強大的好處,也有弊處──你需要做善後處理,所謂的善後處理,就是要清理快取。
下面我們來看看如何建立快取物件、在快取裡新增請求快取資料,從快取裡刪除請求快取的數據,最後是如何完全的刪除快取。
判斷瀏覽器對快取物件cache API的支援
檢查瀏覽器是否支援Cache API…
if('caches' in window) { // Has support! }
…檢查window裡是否存在caches物件。
建立一個快取物件
建立一個快取物件的方法是使用caches.open(),並傳入快取的名稱:
caches.open('test-cache').then(function(cache) { // 缓存创建完成,现在就可以访问了 });
這個caches.open方法回傳一個Promise,其中的cache物件是新創建出來,如果是以前創建過,就不重新創建。
新增快取資料
對於這類的緩存,你可以把它想像成一個Request物件陣列,Request請求取得的回應數據將會按鍵值儲存在快取物件裡。有兩個方法可以往快取裡新增資料:add 和 addAll。用這兩個方法將要快取的請求的位址加入。關於Request物件的介紹你可以參考fetch API這篇文章。
使用addAll方法可以批次新增快取請求:
caches.open('test-cache').then(function(cache) { cache.addAll(['/', '/images/logo.png']) .then(function() { // Cached! }); });
這個addAll方法可以接受一個位址陣列作為參數,這些請求位址的回應資料將會被快取在cache物件裡。 addAll回傳的是一個Promise。新增單一位址使用add方法:
caches.open('test-cache').then(function(cache) { cache.add('/page/1'); // "/page/1" 地址将会被请求,响应数据会缓存起来。 }); add()方法还可以接受一个自定义的Request: caches.open('test-cache').then(function(cache) { cache.add(new Request('/page/1', { /* 请求参数 */ })); }); //跟add()方法很相似,put()方法也可以添加请求地址,同时添加它的响应数据: fetch('/page/1').then(function(response) { return caches.open('test-cache').then(function(cache) { return cache.put('/page/1', response); }); });
存取快取資料
要查看已經換的請求數據,我們可以使用快取物件裡的keys()方法來取得所有快取Request對象,以數組形式:
caches.open('test-cache').then(function(cache) { cache.keys().then(function(cachedRequests) { console.log(cachedRequests); // [Request, Request] }); }); /* Request { bodyUsed: false credentials: "omit" headers: Headers integrity: "" method: "GET" mode: "no-cors" redirect: "follow" referrer: "" url: "http://www.webhek.com/images/logo.png" } */
如果你想查看快取的Request請求的回應內容,可以使用cache.match()或cache.matchAll()方法:
caches.open('test-cache').then(function(cache) { cache.match('/page/1').then(function(matchedResponse) { console.log(matchedResponse); }); }); /* Response { body: (...), bodyUsed: false, headers: Headers, ok: true, status: 200, statusText: "OK", type: "basic", url: "https://www.webhek.com/page/1" } */
關於Response物件的用法和詳細信息,你可以參考fetch API這篇文章。
刪除快取裡的資料
從快取刪除數據,我們可以使用cache物件裡的delete()方法:
caches.open('test-cache').then(function(cache) { cache.delete('/page/1'); });
這樣,快取裡將不再有/page/1請求資料。
取得現有的快取裡的快取名稱
想要取得快取裡已經存在的快取資料的名稱,我們需要使用caches.keys()方法:
caches.keys().then(function(cacheKeys) { console.log(cacheKeys); // ex: ["test-cache"] });
window.caches.keys()回傳的也是一個Promise。
刪除一個快取對象
想要刪除一個快取對象,你只需要快取的鍵名:
caches.delete('test-cache').then(function() { console.log('Cache successfully deleted!'); });
大量刪除舊快取資料的方法:
// 假设`CACHE_NAME`是新的缓存的名称 // 现在清除旧的缓存 var CACHE_NAME = 'version-8'; // ... caches.keys().then(function(cacheNames) { return Promise.all( cacheNames.map(function(cacheName) { if(cacheName != CACHE_NAME) { return caches.delete(cacheName); } }) ); });
想成為service worker專家?上面的這些程式碼值得放到你的儲備庫裡。 火狐瀏覽器和Google瀏覽器都支援service worker,相信很快就會有更多的網站、app使用這種快取技術來提高運行速度。
以上是Javascript如何取得快取和清除快取API的範例程式碼分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

瀏覽器快取影片在哪個資料夾在日常使用網路瀏覽器時,我們經常會觀看各種線上視頻,例如在YouTube上看音樂影片或在Netflix上觀看電影等。而這些影片在載入過程中會被瀏覽器快取下來,以便日後再次播放時能夠快速載入。那麼問題來了,這些快取的影片實際上儲存在哪個資料夾中呢?不同瀏覽器的快取視訊資料夾保存位置是不同的。以下我們將分別介紹幾種常見的瀏覽器以及它們

DNS(DomainNameSystem)是網際網路中用來將網域名稱轉換為對應IP位址的系統。在Linux系統中,DNS快取是一種將網域名稱和IP位址的映射關係儲存在本地的機制,可提高網域解析速度,減輕DNS伺服器的負擔。 DNS快取允許系統在之後存取相同網域名稱時快速檢索IP位址,而不必每次都向DNS伺服器發出查詢請求,從而提高網路效能和效率。本文不念將和大家一起探討如何在Linux上查看和刷新DNS緩存,以及相關的詳細內容和範例程式碼。 DNS快取的重要性在Linux系統中,DNS快取扮演關鍵的角色。它的存在

Guava缓存入门指南:加速你的应用程序Guava缓存是一个高性能的内存缓存库,它可以显著提高应用程序的性能。它提供了多种缓存策略,包括LRU(最近最少使用)、LFU(最近最不经常使用)和TTL(生存时间)。1.安装Guava缓存在你的项目中添加Guava缓存库的依赖。com.goog

標題:HTML檔案的快取機制及程式碼範例導語:在撰寫網頁時,我們常會遇到瀏覽器快取的問題。本文將詳細介紹HTML檔案的快取機制,並提供一些具體的程式碼範例,以幫助讀者更好地理解並應用此機制。一、瀏覽器快取原理在瀏覽器中,每當造訪一個網頁時,瀏覽器會先檢查快取中是否有該網頁的副本。如果有,則直接從快取獲取網頁內容,這就是瀏覽器快取的基本原理。瀏覽器快取機制的好處

CPU(中央處理器)、記憶體(隨機存取記憶體)以及快取之間存在著緊密的相互作用,它們合力構成了電腦系統的關鍵組成部分。它們之間的協調配合,確保了電腦的正常運作和高效性能。 CPU作為電腦的大腦,負責執行各種指令和資料處理;記憶體則用於臨時儲存資料和程序,提供了快速的讀寫存取速度;而快取則起到了緩衝作用,加快了資料的存取速度,提高了電腦的CPU是電腦的核心元件,負責執行各種指令、算術運算和邏輯操作。它被稱為電腦的"大腦",承擔著處理資料和執行任務的重要角色。記憶體是電腦中重要的儲存設備,

SpringBoot是一款廣受歡迎的Java框架,以其簡單易用和快速開發而聞名。然而,隨著應用程式的複雜性增加,效能問題可能會成為瓶頸。為了幫助您打造疾風般快速的springBoot應用,本文將分享一些實用的效能優化秘訣。優化啟動時間應用程式的啟動時間是使用者體驗的關鍵因素之一。 SpringBoot提供了多種最佳化啟動時間的途徑,例如使用快取、減少日誌輸出和最佳化類別路徑掃描。您可以透過在application.properties檔案中設定spring.main.lazy-initialization

PHPAPCu(替代php快取)是加速PHP應用程式的opcode快取和資料快取模組。理解其高級功能對於充分利用其潛力至關重要。 1.批次操作:APCu提供批次操作方法,可同時處理大量鍵值對。這對於大規模快取清除或更新非常有用。 //批次取得快取鍵$values=apcu_fetch(["key1","key2","key3"]);//批次清除快取鍵apcu_delete(["key1","key2","key3"]);2 .設定快取過期時間:APCu允許您為快取項目設定過期時間,以便在指定時間後自

瀏覽器快取的影片怎麼匯出來隨著網路的快速發展,影片已經成為人們日常生活中不可或缺的一部分。而在瀏覽網頁時,我們常常會遇到想要儲存或分享的影片內容,但是有時候我們卻無法找到影片檔案的來源,因為它們可能只存在於瀏覽器的快取中。那麼,如何匯出瀏覽器快取中的影片呢?本文將為您介紹幾種常用的方法。首先,我們需要明確一個概念,即瀏覽器快取。瀏覽器快取是瀏覽器為了提高用
