在 UniApp 开发的网站中使图片能够缓存,不一直刷新

在 UniApp 开发的网站中,要使图片能够缓存,不一直刷新,可以考虑以下几种方法:

1. 使用适当的 HTTP 缓存头

确保你的服务器在响应图片时,返回合适的缓存控制 HTTP 头。以下是一些常用的 HTTP 头来控制缓存:

  • Cache-Control :

    你可以设置 Cache-Control 头为 max-age,指定资源在多久后过期。例如:

javascript 复制代码
Cache-Control: public, max-age=31536000
  • 这表示资源可以被缓存,并在一年内有效。

  • Expires :

    指定一个具体的过期时间。例如:

javascript 复制代码
Expires: Wed, 21 Oct 2025 07:28:00 GMT

2. 通过版本号控制图片

在你的图片 URL 中添加版本信息或时间戳,当你想更新图片时,改变这个版本号。这可以防止浏览器使用旧的缓存。例如:

javascript 复制代码
const imageUrl = `https://example.com/image.png?v=1.0`;

每次更新图片,你只需更改版本号,如 ?v=2.0

3. 使用 uni.request 进行手动缓存

你可以使用 uni.request 请求图片,然后将图片以 Base64 的形式存储在 data 里,这样可以有效利用 Vue 的响应式特性。
*

javascript 复制代码
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 中并在需要时读取。
*

javascript 复制代码
// 存储图片
localStorage.setItem('cachedImage', base64Image);

// 读取图片
const cachedImage = localStorage.getItem('cachedImage');
if (cachedImage) {
    this.imageSrc = cachedImage; // 使用缓存的图片
}

5. 合理设置 <img> 标签的属性

尽量使用图片的 srcalt 属性,让浏览器知道这是一个图片资源,避免使用重定向或其他会导致缓存无效的方式。

总结

通过合理设置服务器的缓存头、使用版本号管理图片、手动请求并缓存图片数据、或者利用本地存储,你可以有效地让 UniApp 开发的网站中的图片缓存下来,而不至于每次都要刷新。

相关推荐
不是株6 小时前
Redis(入门篇)
数据库·redis·缓存
qq_281684217 小时前
Apt-Serve:基于混合缓存与自适应调度突破LLM推理KV缓存瓶颈,吞吐量提升8.8倍
缓存
1104.北光c°9 小时前
深入浅出 Elasticsearch:从搜索框到精准排序的架构实战
java·开发语言·elasticsearch·缓存·架构·全文检索·es
FakeOccupational9 小时前
【电路笔记 STM32】Cortex-M7 内核上的数据缓存结构图 + MPU内存保护单元 + Cache基本操作 + Cache&DMA 时序图
笔记·stm32·缓存
AMoon丶9 小时前
Golang--内存管理
开发语言·后端·算法·缓存·golang·os
笨笨狗吞噬者10 小时前
维护 uniapp 小程序端近一年,我想拉一个开发者交流群
前端·程序员·uni-app
小江的记录本11 小时前
【Redis】Redis常用命令速查表(完整版)
java·前端·数据库·redis·后端·spring·缓存
ZHOUPUYU12 小时前
从缓存到消息队列的全面应用,PHP与Redis深度实战
redis·缓存·php
我真会写代码1 天前
从入门到精通:Kafka核心原理与实战避坑指南
分布式·缓存·kafka
我真会写代码1 天前
Redis高频面试题(含标准答案,覆盖基础+进阶+实战)
数据库·redis·缓存