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

ops/2025/3/15 10:55:42/

在 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 开发的网站中的图片缓存下来,而不至于每次都要刷新。


http://www.ppmy.cn/ops/165920.html

相关文章

不用 Tomcat?SpringBoot 项目用啥代替?

在SpringBoot框架中&#xff0c;我们使用最多的是Tomcat&#xff0c;这是SpringBoot默认的容器技术&#xff0c;而且是内嵌式的Tomcat。 同时&#xff0c;SpringBoot也支持Undertow容器&#xff0c;我们可以很方便的用Undertow替换Tomcat&#xff0c;而Undertow的性能和内存使…

Git 克隆问题排查与解决方案

问题 1&#xff1a;克隆时无法连接 GitHub Cloning into OpenManus... fatal: unable to access https://github.com/mannaandpoem/OpenManus.git/: Failed to connect to github.com port 443 after 21074 ms: Could not connect to server 克隆项目时 错误表明无法连接到 g…

Zookeeper相关面试题

以下是150道Zookeeper相关面试题&#xff1a; Zookeeper基础概念 1. Zookeeper是什么&#xff1f; Zookeeper是一个开源的分布式协调服务&#xff0c;用于管理分布式系统中的配置、命名、分布式锁等功能。 2. Zookeeper的主要功能有哪些&#xff1f; • 配置管理 • 分布式…

【3D视觉学习笔记2】摄像机的标定、畸变的建模、2D/3D变换

本系列笔记是北邮鲁老师三维重建课程笔记&#xff0c;视频可在B站找到。 1. 摄像机的标定 摄像机标定的过程就是从1张或者多张图片中求解相机的内外参数的过程。 根据上一节的知识&#xff0c;针孔摄像机模型的世界坐标系到成像平面的映射关系为 p K [ R , T ] P p K[R,T]…

C#通过API接口返回流式响应内容---分块编码方式

1、背景 上一篇文章《C#通过API接口返回流式响应内容—SSE方式》阐述了通过SSE&#xff08;Server Send Event&#xff09;方式&#xff0c;由服务器端推送数据到浏览器。本篇是通过分块编码的方式实现 2、效果 3、具体代码 3.1 API端实现 [HttpGet] public async Task Chu…

基于YOLOv8深度学习的PCB缺陷检测识别系统【python源码+GUI界面+数据集+训练代码】

目录 一、界面功能展示 二、前言摘要 三、GUI界面演示 &#xff08;一&#xff09;用户加载自定义模型 &#xff08;二&#xff09;单张图像检测 &#xff08;三&#xff09;检测图像文件夹 &#xff08;四&#xff09;检测视频 &#xff08;五&#xff09;保存 四、模…

Docker 构建 nginx-redis-alpine 项目详解

Docker 构建 nginx-redis-alpine 项目详解 一、课程概述 嘿&#xff0c;朋友们&#xff01;今天咱们要深入探索一个超级实用的项目 ——nginx-redis-alpine&#xff01;这个项目可不简单&#xff0c;它包含了好多重要的知识点&#xff0c;像文件目录结构、核心文件的作用及配…

什么是海外仓WMS系统?跟ERP系统有什么区别?

近年来&#xff0c;随着数字化技术的升级&#xff0c;越来越多的海外仓引入了WMS系统来支持仓库管理。那么&#xff0c;什么是海外仓WMS系统&#xff1f;它和我们常说的ERP系统有什么区别&#xff1f;海外仓使用WMS系统又有哪些好处呢&#xff1f;本篇文章将为你解答清楚。 一…