【问题标题】:Prevent caching of an iframe in a Flask based web-application防止在基于 Flask 的 Web 应用程序中缓存 iframe
【发布时间】:2021-05-23 21:33:38
【问题描述】:

我真的被我在一个编程项目中遇到的缓存问题困住了。 基本上我正在生成一个带有 folium 的 Leaflet-Map 并将静态输出存储在我的本地磁盘上。

然后我想在另一个 HTML 页面中显示这个 HTML 作为 iframe。 然后,用户应该能够生成一个带有简单表单的新地图和一个 POST 请求到烧瓶,然后重新加载包含带有 iframe 的 HTML 的页面。

问题是一切正常,页面在磁盘上更新,但页面在浏览器中重新加载时却没有。这个问题也与浏览器无关(chrome、firefox、ege)。

我已经尝试了多种方法:

  1. 添加 app.after_request:
@app.after_request
def add_header(response):
    response.headers['Cache-Control'] = 'public, max-age=0'
    return response
  1. 在 iframe 的 url 中添加随机查询参数
  <div class="embed-responsive embed-responsive-16by9">
            
            <script type="text/javascript">
                var url = "map.html?" + (new Date()).getTime();
                window.document.write("<iframe class=\"embed-responsive-item\" id=\"map\" src=" + url + "\></iframe>")</script> 
        </div>
  1. 使用 BS 将元标记添加到 folium 的 HTML 输出中: Iframe-Output

这仍然对 iframe 缓存没有任何影响。 也许有更好的方法可以做到这一点,或者有人已经遇到过类似的问题。

【问题讨论】:

    标签: html flask iframe browser-cache


    【解决方案1】:

    因此,对于遇到类似问题的任何人,请尝试使用 Debug FLASK_ENV=development 并通过 shell 或命令行进行设置。

    set FLASK_ENV=development

    这仍然不是这个问题的最终解决方案,但如果设置了“开发”,也许有人可以告诉 Flask 配置有哪些变化。 缓存肯定发生在服务器端。所有响应标头、元标记和动态 url 都正常工作。 在我看来,处于开发模式的烧瓶在磁盘上发生更改时会重新加载本地文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-04
      • 1970-01-01
      • 1970-01-01
      • 2017-05-23
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多