Flask 在 .js 文件中看不到变化

2024-03-30

我对其中一项进行了更改.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然后烧瓶would获取文件上的新更改。但在bar.htmlFlask 完全忽略它们。

怎么了?

唯一有效的方法是单击浏览器上的“禁用缓存”并再次重新加载。


最终,这是一个令人沮丧的浏览器缓存问题,可以通过强制浏览器执行“硬刷新”来解决,这将是依赖于浏览器/操作系统的击键,但通常这是有效的:

  • Windows:Ctrl+F5
  • 苹果电脑:Cmd+Shift+R
  • Linux:Ctrl+Shift+R

还有其他文件名技巧可以用来避免这个问题(在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/等)设置默认值

编辑 2019 年 4 月 1 日(与愚人节无关)

  • Mac / Safari 按键现在似乎是:Cmd+Opt+R(通过评论,谢谢!)。
  • 请参阅@MarredCheese 的新答案,了解一个非常优雅的“文件名技巧”,以强制浏览器忽略更新文件的缓存副本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flask 在 .js 文件中看不到变化 的相关文章

  • 更改seaborn.clustermap中ytick标签的颜色

    是否可以更改seaborn clustermap中ytick标签的颜色 所以对于Seaborn 鸢尾花示例 http seaborn pydata org generated seaborn clustermap html 可以根据物种设置
  • 如何从网站中抓取动态内容?

    所以我使用 scrapy 从亚马逊图书部分抓取数据 但不知何故我知道它有一些动态数据 我想知道如何从网站中提取动态数据 到目前为止我已经尝试过以下方法 import scrapy from items import AmazonsItem
  • env: python: 使用 Xcode 构建应用程序时没有这样的文件或目录

    当我在 Xcode 在 MacOS 12 3 上 中构建 运行 存档我的应 用程序时 遇到此错误 env python No such file or directory Command Ld failed with a nonzero e
  • Python 的“platform.mac_ver()”报告不正确的 MacOS 版本

    我正在使用Pythonplatform module https docs python org 3 library platform html要识别 MacOS 版本 如下所示 import platform print platform
  • 如何创建毫秒粒度的 Python 时间戳?

    我需要一个自纪元以来的毫秒 ms 时间戳 这应该不难 我确信我只是缺少一些方法datetime或类似的东西 实际上微秒 s 粒度也很好 我只需要亚 1 10 秒的计时 例子 我有一个每 750 毫秒发生一次的事件 假设它检查灯是否打开或关闭
  • 用定点迭代求解该方程

    我怎样才能解这个方程 x3 x 1 0 使用定点迭代 有没有定点迭代我可以在网上找到代码 尤其是Python 吗 Using scipy optimize fixed point http docs scipy org doc scipy
  • 如果使用 unicode 字符,则从数据库中进行 SELECT 会出现问题

    我在用着latest带DatabaseLibrary的python和机器人框架版本 https franz see github io Robotframework Database Library api 1 0 1 DatabaseLi
  • 从内存中发送图像

    我正在尝试为 Discord 机器人实现一个系统 该系统可以动态修改图像并将其发送给机器人用户 为此 我决定使用 Pillow PIL 库 因为它对于我的目的来说似乎简单明了 这是我的工作代码的示例 它加载一个示例图像 作为测试修改 在其上
  • pybind11:如何将 c++ 和 python 代码打包到一个包中?

    我正在尝试使用 CMake 和 pybind 11 将现有的 Python 代码和新的 C 11 代码打包在一起 我认为我缺少一些可以添加到 CMake 脚本中的简单内容 但在任何地方都找不到它 pybind11 示例只有 C 代码和没有P
  • Selenium 上的切换窗口

    我在 Python 中使用 Selenium 和 PhantomJS 我需要打开一个新窗口并控制它 出于测试目的 我这样做 from selenium import webdriver driver webdriver PhantomJS
  • Buildozer Numpy RuntimeError:工具链损坏:无法链接简单的 C 程序

    用 Python 编写我的第一个 Android 应用程序并使用 Buildozer 对其进行打包 因为稍后在项目中需要使用numpy 所以我尝试打包以下测试代码 import numpy import kivy kivy require
  • Tkinter:通过多处理启动进程会创建不需要的新窗口

    我计划围绕数值模拟编写一个小型 GUI 这就是我现在使用 Tkinter 的原因 模拟应在单独的进程中从 GUI 启动 为了玩一下 我定义了一个函数 random process 来生成成对的 randn 数字 这应该是一个真正的模拟过程
  • Python 上每个系数具有特定约束的多元线性回归

    我目前正在数据集上运行多元线性回归 起初 我没有意识到我需要限制自己的体重 事实上 我需要有特定的正权重和负权重 更准确地说 我正在做一个评分系统 这就是为什么我的一些变量应该对音符产生积极或消极的影响 然而 当运行我的模型时 结果不符合我
  • 如何在Python中获取套接字的外部IP?

    当我打电话时socket getsockname 在套接字对象上 它返回我的机器的内部 IP 和端口的元组 但是 我想找回我的外部IP 最便宜 最有效的方式是什么 如果没有外部服务器的配合 这是不可能的 因为您和另一台计算机之间可能存在任意
  • 检测反射 DLL 注入

    在过去的几年中 恶意软件 以及一些渗透测试工具 如 Metasploit 的 meterpreter 负载 已经开始使用反射 DLL 注入 PDF http www harmonysecurity com files HS P005 Ref
  • 使用条件在 pandas 数据框中生成新列

    我有一个 pandas 数据框 如下所示 portion used 0 1 1 0 1 2 0 3 2 3 0 0 3 4 0 8 我想根据以下内容创建一个新专栏used列 以便df看起来像这样 portion used alert 0 1
  • 出于安全目的,您是否有理由不执行自己的算法来打乱 ID?

    我计划实现我自己的非常简单的 哈希 公式 为具有多个用户的应用程序添加一层安全性 我目前的计划如下 用户创建一个帐户 此时后端会生成一个 ID ID 通过公式运行 假设 ID 57 8926 36 7 或同样随机的东西 然后 我将新的用户
  • gstreamer 中的无缝视频循环

    我正在尝试使用 gstreamer 循环播放视频 它是 python 绑定 第一次尝试是hook EOSmessage并为管道生成搜索消息 import gi gi require version Gst 1 0 from gi repos
  • 在Python中通过sys.stdout写入unicode字符串

    暂时假设一个人无法使用print 从而享受自动编码检测的好处 所以这给我们留下了sys stdout 然而 sys stdout太蠢了不做任何合理的编码 http bugs python org issue4947 现在人们阅读 Pytho
  • 如何在Python中显示坐标网格线的变换?

    假设我有常规的笛卡尔坐标系 x y 并且我考虑一个矩形网格区域 D 分成小方块 我想看看域 D 如何在 Python 中的坐标变换 T x y gt u x y v x y 下映射 我正在寻找这样的东西 See here https mat

随机推荐

  • pjax :HTML 链接,其工作方式类似于浏览器后退按钮

    我使用 pjax 进行网站导航 我需要创建一个 HTML 后退按钮 其工作方式与浏览器后退按钮完全相同 但这应该是一个简单的 HTML 链接 如何创建导航到上一页的 pjax 链接 我搜索过 所有主题似乎都与浏览器后退按钮有关 这不是我想要
  • Apache Web 服务器在 60 秒后超时

    我在 IBM Softlayer 中运行的 apache Web 服务器 php 在 60 秒后遇到超时 这些是我的设置 这些设置后httpd服务器重新启动 httpd conf TimeOut 300 Timeout 300 同时尝试两者
  • 颤振行和列

    我是一个颤振初学者 如何创建无边框的 4 2 表格列之类的元素 我尝试过 但没有得到我想要的对齐方式 像这样 https i stack imgur com i1a3f jpg 有人可以指导我如何解决这个问题吗 这是我的有状态小部件的构建方
  • 如何改进 clisp 错误消息?

    我已经接触过一些clisp 有点令人困惑的是它没有打印出错误所在的行号 或者 至少给出错误所在的一般提示 在某些情况下这一定是可能的 对吧 有什么方法可以获得更好的错误消息吗 正如我看到的大多数涉及 clisp 的问题一样 答案可能是 不要
  • 请对我的示例 Python 程序进行代码审查 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我仍在学习
  • 在 javascript 排序调用之前强制更新 element.innerHTML

    这种情况的最佳实践是什么 1 用户点击 对巨大的javascript数组进行排序 2 浏览器通过element innerHTML Sorting 显示 Sorting 3 浏览器对巨大的 javascript 数组进行排序 100 CPU
  • 使用流畅语法的嵌套 GroupBy LINQ

    我正在尝试使用流畅的 即 方法 语法编写嵌套的 GroupBy LINQ 表达式 这是我的课程和数据 class Person public String ZipCode Gender Name private static List
  • NotImplementedError:无法对未注册的加载器类型执行此操作

    我正在编写一个小脚本来生成 HTML 文件 为此 我正在使用jinja2 这是我的脚本 在jinja2文档 coding utf 8 from jinja2 import Environment PackageLoader env Envi
  • Nuget 包有什么意义?

    也许我在这里做错了什么或者表达了纯粹的无知 但我真的看不出 Nuget 包有什么好处 我最近决定安装一些 Nuget 包来替换我的应用程序中的静态 DLL 当我检查包创建的文件夹时 它们似乎包含许多不同版本的 DLL 所有这些都嵌套在一系列
  • 重命名没有列名的 pandas 数据框的列[重复]

    这个问题在这里已经有答案了 我试图在 dataframe from dict 操作之后命名新数据帧的列 只需使用 pandas dataframe from dict 函数 df pd DataFrame from dict my dict
  • 如何在python2.7中安装gtk?

    我正在使用 Debian 6 04 和 Python 2 7我编译了Python 2 7 configure make make install 在控制台中 gt python2 7 Python 2 7 3 default Jul 28
  • 如何排序 unsort: array(1).sort 转换 array(2) -> array(3).unsort (反转 array(1).sort

    如何对结果进行排序 操作和取消排序 假设我有一个浮点数组p1 0 15 0 3 0 25 0 12 其排序为 p2 sort p1 一个函数 操作p2作为输入 导致p3 p3 f p2 x y 对于某些功能f 我怎样才能取消排序p3以最聪明
  • Jmeter中的“延迟时间”与“连接时间”有什么区别?

    我是jmeter 3 1用户 我不清楚 延迟时间 与 连接时间 的区别 事实上 在jmeter官方文档中 是这样说的 新的连接时间指标 connectTime 表示建立连接的时间 默认情况下 它不会保存到 CSV 或 XML 要保存它 请添
  • 为什么当我导入正在打印的同一文件时,Python 会打印两次输出?

    我一直在玩Python 因为我是Python的初学者 我写了以下 Parent 课程 这是我从 Udacity 在线课程中阅读的 继承 py 文件 import inheritance Why this import statement c
  • 我怎样才能使其成为类的私有成员或方法,以便可以在静态库本身内部而不是在库外部访问它?

    我想为 Objective C 中的以下类准备小型静态库 A类 B类 C类 我想将这些类包含在静态库中 现在 A 类可以访问 B 类或 C 类方法的公共成员 现在当我将上述库集成到其他项目中时 我准备了D类 只能访问A类和B类 不是 C 类
  • Python 从网站上抓取表格?

    我想了解 treasury gov 网站上提供的所有国债收益率 https www treasury gov resource center data chart center interest rates Pages TextView a
  • 临时表上的聚集索引

    我正在尝试优化一个具有如下代码的过程 CREATE TABLE t1 c1 int c2 varchar 20 c3 varchar 50 CREATE CLUSTERED INDEX ix t1 ON t1 c3 ON PRIMARY 我
  • CMake 无法静态链接 SDL2

    我正在尝试使用 CMake 和 MSYS Makefile 构建一个简单的 SDL2 游戏 我想静态链接 SDL2 这样我就可以分发单个可执行文件 而不必包含 SDL2 dll 这是我的CMakeLists txt file project
  • 如何删除选定的 DataGridViewRow 并更新连接的数据库表?

    我有一个DataGridViewWindows 窗体应用程序上的控件 用 C 编写 我需要的是 当用户选择 DataGridViewRow 然后单击 删除 按钮时 应删除该行and接下来 需要使用表适配器更新数据库 这是我到目前为止所拥有的
  • Flask 在 .js 文件中看不到变化

    我对其中一项进行了更改 js我使用的文件 无论我做什么 flask 都会坚持从内存缓存中获取文件的最新版本 而不进行任何更改 为了澄清一下 我有以下结构 一切都始于foo html return render template foo ht