我对.js
使用的文件之一进行了更改,无论我做什么,flask都坚持从内存缓存中获取文件的最新版本,而不进行更改。
为了澄清,我具有以下结构。一切始于foo.html
return render_template foo.html
foo.html
内部有一个窗体,该窗体调用flask包含一些数据,然后返回第二个模板bar.html
:
return render_template bar.html
第二个模板调用.js
放置在static
文件夹中的某些文件,但是当代码更改时它不会更新。
我提到了上面的结构,因为如果将.js
文件放在foo.html
而不是bar.html
Flask上,则Flask 会
选择文件上的新更改。但是在bar.html
Flask中完全忽略了它们。
怎么了?
唯一有效的方法是在浏览器上单击“禁用缓存”,然后再次重新加载。
最终,这是一个令人沮丧的浏览器缓存问题,可以通过强制浏览器执行“硬刷新”来解决,这将取决于浏览器/操作系统,但是通常可以:
还可以使用其他文件名技巧来避免此问题(在OP的注释中提到)。这些在您无法控制浏览器行为的生产中尤其重要。
对于非静态Flask响应,您可以设置cache_control.max_age
属性,该属性应告诉浏览器如果缓存了响应,则何时使响应到期。例如,如果您有一个返回JSON数据的Flask
XHR端点,则可以执行以下操作:
@app.route('/_get_ajax_data/')
def get_ajax_data():
data = {"hello": "world"}
response = jsonify(data)
response.cache_control.max_age = 60 * 60 * 24 # 1 day (in seconds)
return response
通常,您还可以在生产Web服务器配置中为特定资源类型(例如CSS / JS / HTML / JSON / etc)设置默认值。
编辑4/1/2019 (与愚人节无关)
问题内容: 我正在使用Flask,一个适用于Python的网络框架。Flask使用Jinja渲染模板。我不知道Jinja Flask使用哪个版本,也不知道如何检索Jinja版本或Flask版本。我使用python版本2.7。 该模板在css / image目录中包含一个图像。直接在Firefox浏览器中以文件形式查看模板时,此图像可见。 但是在执行Flask时不是: HTML文件的内容: 模板运行
问题内容: 我有一个日志文件,该文件是由另一个要监视更改的进程编写的。每次发生更改时,我都希望读入新数据以对其进行一些处理。 最好的方法是什么?我希望从PyWin32库中获得某种吸引。我找到了该功能,但不知道如何要求它观看特定文件。 问题答案: 你是否已经看过http://timgolden.me.uk/python/win32_how_do_i/watch_directory_for_chang
下面是相关的AS3代码: 和我的php代码: 包括一次“connect.php”; $username=$_POST['username']$密码=$_POST['password']; 如果($_POST['systemCall']==“checkLogin”){ $sql=“从用户名为“$username”和密码为“$password”的用户中选择*; $query=mysql\u查询($sq
问题内容: 有人尝试过基于静态文件夹代码片段的此片段flask配置吗? 代码: 就我而言,我抱怨这条线: 错误信息: 有谁能通过Flask中的config.py文件设置static_folder? 问题答案: 对该片段一无所知,但是 永远不是有效的Python(Python没有l值)。看起来好像有一个类似dict的界面,所以令人反感的行应该只是 在setter上方的getter定义中可能存在复制和
我的日志代码: 我的烧瓶代码: warning.log
给我的Laravel 5.1网站一个可编辑的镜头。我有一个列表的文本标题列为表行。我跟着留档。当我点击标题时,我可以看到文本字段的编辑表单弹出。我更改文本并提交。新文本显示,弹出窗口按预期消失。但是数据库没有更新。我确保将data-url设置为我需要的后期操作。确保为它添加路线。确保在我的控制器中有一个方法来处理请求、更新数据库和重定向(不确定重定向是否必要)。这是一个单行的片段,为了简单起见,我