html - 防止在基于 Flask 的 Web 应用程序中缓存 iframe
问题描述
我真的陷入了在我正在进行的编程项目中遇到的缓存问题。基本上我正在生成一个带有 folium 的 Leaflet-Map 并将静态输出存储在我的本地磁盘上。
然后我想在另一个 HTML 页面中显示这个 HTML 作为 iframe。然后,用户应该能够生成一个带有简单表单的新地图和一个 POST 请求到烧瓶,然后重新加载包含带有 iframe 的 HTML 的页面。
问题是一切正常,页面在磁盘上更新,但在浏览器中重新加载页面时却没有。这个问题也与浏览器无关(chrome、firefox、ege)。
我已经尝试了多种方法:
- 添加 app.after_request:
@app.after_request
def add_header(response):
response.headers['Cache-Control'] = 'public, max-age=0'
return response
- 在 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>
- 使用 BS 将元标记添加到 folium 的 HTML 输出: Iframe-Output
这仍然对 iframe 缓存没有任何影响。也许有更好的方法可以做到这一点,或者有人已经遇到过类似的问题。
解决方案
因此,对于面临类似问题的任何人,请尝试使用 Debug FLASK_ENV=development 并通过 shell 或命令行进行设置。
set FLASK_ENV=development
这仍然不是这个问题的最终解决方案,但如果设置了“开发”,也许有人可以告诉 Flask 配置有哪些变化。缓存肯定发生在服务器端。所有响应标头、元标记和动态 url 都正常工作。在我看来,处于开发模式的烧瓶在磁盘上发生更改时正在重新加载本地文件。
推荐阅读
- google-apps-script - 谷歌表格 - 当文件名相同时,脚本“替换”而不是“创建”
- excel - 使用 Excel 数据搜索网站以提取结果,然后循环
- handlebars.js - 使用每个循环的内容访问另一个变量
- visual-studio-code - 构建颤振项目时如何将飞镖和颤振设置为默认值
- c# - 字典:属性或索引器不能分配给:它是只读的
- typescript - 如何将自定义标量导入 NestJs 中的 .graphql 文件?
- javascript - 自动复制当前标签 URL
- docker - 如何解决来自容器的错误
- python - 使用纸浆 cbc 求解器时,我可以设置约束的优先级吗?
- java - Java 使用 Steams VS TreeMap 对地图进行排序