在 UniApp 開發的網站中,要使圖片能夠緩存,不一直刷新,可以考慮以下幾種方法:
1. 使用適當的 HTTP 緩存頭
確保你的服務器在響應圖片時,返回合適的緩存控制 HTTP 頭。以下是一些常用的 HTTP 頭來控制緩存:
-
Cache-Control:
你可以設置?Cache-Control
?頭為?max-age
,指定資源在多久后過期。例如: -
Cache-Control: public, max-age=31536000
-
這表示資源可以被緩存,并在一年內有效。
-
Expires:
指定一個具體的過期時間。例如: -
Expires: Wed, 21 Oct 2025 07:28:00 GMT
2. 通過版本號控制圖片
在你的圖片 URL 中添加版本信息或時間戳,當你想更新圖片時,改變這個版本號。這可以防止瀏覽器使用舊的緩存。例如:
const imageUrl = `https://example.com/image.png?v=1.0`;
每次更新圖片,你只需更改版本號,如?
?v=2.0
。3. 使用?
uni.request
?進行手動緩存你可以使用?
uni.request
?請求圖片,然后將圖片以 Base64 的形式存儲在?data
?里,這樣可以有效利用 Vue 的響應式特性。 -
uni.request({url: 'https://example.com/image.png',responseType: 'arraybuffer',success: (res) => {const base64Image = 'data:image/png;base64,' + uni.arrayBufferToBase64(res.data);this.imageSrc = base64Image; // 設置圖片源為 Base64 格式} });
4. 使用本地存儲
如果需要長期緩存圖片,可以將圖片數據存儲到本地,比如使用?
localStorage
。你可以將圖片的 Base64 編碼存儲到?localStorage
?中并在需要時讀取。 -
// 存儲圖片 localStorage.setItem('cachedImage', base64Image);// 讀取圖片 const cachedImage = localStorage.getItem('cachedImage'); if (cachedImage) {this.imageSrc = cachedImage; // 使用緩存的圖片 }
5. 合理設置?
<img>
?標簽的屬性盡量使用圖片的?
src
?和?alt
?屬性,讓瀏覽器知道這是一個圖片資源,避免使用重定向或其他會導致緩存無效的方式。總結
通過合理設置服務器的緩存頭、使用版本號管理圖片、手動請求并緩存圖片數據、或者利用本地存儲,你可以有效地讓 UniApp 開發的網站中的圖片緩存下來,而不至于每次都要刷新。