You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HTML页面自动刷新内存更新的图片?Flask新手求助

解决图片更新后自动刷新的方案

你当前用<meta http-equiv="refresh" content="2">整页刷新的方式,体验差还可能因为浏览器缓存导致新图片不显示。下面给你两个更实用的方案:

方案一:定时局部刷新图片+避免缓存

直接修改HTML,去掉整页刷新的meta标签,用JS定时更新图片的src,加上时间戳参数绕过浏览器缓存:

<!DOCTYPE html>
<html lang="en">
<head>
    <script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Stack of Images</title>
</head>

<body>
    <img src="static/X.jpg" alt="Image 1" id="img1" width="960" height="540">
    <img src="static/X_display.jpg" alt="Image 2" id="img2" width="960" height="540">

    <script>
        function refreshImages() {
            const timestamp = new Date().getTime();
            $('#img1').attr('src', `static/X.jpg?${timestamp}`);
            $('#img2').attr('src', `static/X_display.jpg?${timestamp}`);
        }

        $(document).ready(function() {
            refreshImages();
            // 每隔2秒刷新一次,可自行调整毫秒数
            setInterval(refreshImages, 2000);
        });
    </script>
</body>
</html>

这个方案只会刷新两张图片,不会整页重载;时间戳参数让浏览器认为是新请求,不会读取缓存的旧图片。

方案二:仅在图片实际更新时刷新(Flask配合)

如果想更高效,只有当图片真的被修改时才刷新,可以在Flask后端加接口,前端定时检查图片修改时间,对比后再更新:

Flask后端代码

from flask import Flask, jsonify, render_template
import os
from datetime import datetime

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/image-mod-time/<filename>')
def get_image_mod_time(filename):
    image_path = os.path.join('static', filename)
    if os.path.exists(image_path):
        mod_time = os.path.getmtime(image_path)
        return jsonify({'mod_time': datetime.fromtimestamp(mod_time).isoformat()})
    return jsonify({'mod_time': None})

if __name__ == '__main__':
    app.run(debug=True)

前端HTML修改

把之前的脚本换成下面的:

<script>
    let lastModTimes = {
        'X.jpg': null,
        'X_display.jpg': null
    };

    function checkAndRefreshImages() {
        // 检查第一张图片
        $.get(`/image-mod-time/X.jpg`, function(data) {
            if (data.mod_time && data.mod_time !== lastModTimes['X.jpg']) {
                lastModTimes['X.jpg'] = data.mod_time;
                const timestamp = new Date().getTime();
                $('#img1').attr('src', `static/X.jpg?${timestamp}`);
            }
        });

        // 检查第二张图片
        $.get(`/image-mod-time/X_display.jpg`, function(data) {
            if (data.mod_time && data.mod_time !== lastModTimes['X_display.jpg']) {
                lastModTimes['X_display.jpg'] = data.mod_time;
                const timestamp = new Date().getTime();
                $('#img2').attr('src', `static/X_display.jpg?${timestamp}`);
            }
        });
    }

    $(document).ready(function() {
        checkAndRefreshImages();
        // 每隔2秒检查一次
        setInterval(checkAndRefreshImages, 2000);
    });
</script>

注意事项

  • 确保Flask项目结构正确:templates文件夹放HTML,static文件夹放图片。
  • 定时刷新的间隔可以根据需求调整,比如改成5000就是5秒检查一次。
  • 方案一简单直接,适合快速实现;方案二更节省资源,适合对性能有要求的场景。

内容的提问来源于stack exchange,提问作者user2037777

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 23:43:11