如何更新asset文件夹中的图片?解决替换后仍显示旧图问题
解决Dash中assets图片更新后仍显示旧图的问题
出现这个问题的核心原因是浏览器缓存了旧的图片资源,即使你替换了本地asset文件夹里的图片,浏览器会优先加载缓存中的旧文件,重启电脑并不会清除浏览器的静态资源缓存,所以界面还是显示旧图。
以下是几种可行的解决方法:
给图片路径加随机参数/版本号
修改回调里的图片路径,在文件名后添加时间戳或随机字符串,让浏览器认为是新资源,从而绕过缓存。示例代码:import time def add_image(): # 用当前时间戳作为参数,确保每次路径都不同 image_well=f'assets/img.PNG?{int(time.time())}' style_image={'height':'300px','width': '100%','padding-left':'6%', 'padding-right':'5%'} return image_well,style_image强制浏览器刷新缓存
手动触发强制刷新:Windows/Linux按Ctrl+F5,Mac按Cmd+Shift+R,这会让浏览器跳过缓存,重新加载最新的图片文件。确保回调能触发更新
你的当前回调没有设置Input触发条件,可能不会主动执行更新。可以添加一个触发源(比如按钮点击),同时结合上面的缓存规避方法,示例:@app.callback( [Output("html-img", 'src'), Output("html-img-div", 'style')], Input("refresh-image-btn", 'n_clicks'), # 新增一个按钮作为触发源 prevent_initial_call=False ) def add_image(n_clicks): import time image_well=f'assets/img.PNG?{int(time.time())}' style_image={'height':'300px','width': '100%','padding-left':'6%', 'padding-right':'5%'} return image_well,style_image
内容的提问来源于stack exchange,提问作者roudan
相关产品推荐
相关产品推荐

