html项目解决图片缓存问题

您所在的位置:网站首页 前端缓存问题怎么解决 html项目解决图片缓存问题

html项目解决图片缓存问题

2024-07-14 18:17| 来源: 网络整理| 查看: 265

一、问题描述      

        在做html项目中,有时候我们会遇到这种情况:web页面上有一个标签,图片A的src路径为''XXX/XXX/XX.jpg''。进行调用摄像头或者执行某个图片生成函数后,如果选择让新图片覆盖旧图片,保证存储路径不变的话,页面可能会出现图片不刷新的情况。

二、产生原因       

       这是由浏览器的缓存机制导致的:浏览器在加载页面后,会对页面资源进行缓存,下次打开页面会优先从缓存中读取数据,由于图片的存储路径没有发生变化,即使图片A已经被覆盖了,但浏览器缓存的数据还是图片A,所以网页上显示的图片也不会发生变化。

三、解决方案

本文在这里说明两种比较简单的解决方案:

1.通过ctrl+F5强制刷新,跳过缓存,重新请求数据,此方法对部分浏览器有效(目前测试过chome和edge,均能生效)

2.给图片的url添加一个随机数(这里推荐使用时间戳),这样就算是同一张图片,在不断刷新时也会被判定成不同的图片,也就解决了缓存问题。这里用js和django环境下传递参数这两种方法分别实现:

js方法实现:

显示图片部分的html代码:

当前图片未生成

 在这里通过onclick进行点击监听,触发switchImg函数,对图片进行添加时间戳,JS代码如下:

function switchImg() { var ssr = "图片路径"; var ima = document.getElementById("ima"); var index = new Date().getTime(); ima.src = ssr+"?res="+index; }

 这样就通过js,实现了图片的时间戳添加,从而解决了图片缓存的问题。实现效果如下:

右键单击对应图片,选择检查,就能在浏览器的控制台查看到上图的属性,从图中可以看到,图片的url地址后面加了一个时间戳,且每次刷新后,时间戳都会改变,浏览器会判定为不同图片,从而不会调用缓存。

 

django环境下后端向前端传递url:


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3