【问题标题】:Flask does not load CSS file..?Flask 不加载 CSS 文件..?
【发布时间】:2015-08-23 09:49:27
【问题描述】:

所以我遇到的问题是我的网络应用程序有时只加载 css 文件,并且即使我对 css 文件进行编辑甚至删除文件,它也使用加载的相同 css 文件数据。我不知道发生了什么事。我注意到,当它正确加载 css 时,会显示以下消息:

127.0.0.1 - - [08/Jun/2015 14:46:19] "GET /static/style.css HTTP/1.1" 200

我的 style.css 文件位于名为 static 的文件夹下,并且在我的 html 文件中

<link type='text/css' href='{{ url_for('static', filename='style.css') }}' rel='stylesheet'>

【问题讨论】:

  • Flask 添加缓存头;您的浏览器不会在缓存仍然新鲜时再次加载文件。
  • @MartijnPieters 我对 Web 开发非常陌生,您能否简要解释一下缓存标头以及我如何解决问题。
  • 你可以使用缓存破坏器;在? 之后添加一个唯一值到您的 URL;每次更改文件时也会更改该值。见flask.pocoo.org/snippets/40

标签: python html css python-2.7 flask


【解决方案1】:

Ctrl+Shift+R刷新页面效果很好。

【讨论】:

    【解决方案2】:

    Flask 在静态资源上设置缓存控制标头,您的浏览器将缓存这些文件长达 12 小时。

    您的选择是:

    • SEND_FILE_MAX_AGE_DEFAULT 配置指令设置为更短的值;它设置为 43200,但如果你真的想要,你可以将它设置为 0。

    • 在静态 URL 中添加缓存破坏者查询参数;如果您的静态 URL 以 ?&lt;somerandomvalue&gt; 结尾,那么如果该随机值发生变化,您的浏览器将重新加载资源。您可以每次手动执行此操作,也可以使用此Flask snippet 覆盖url_for() 函数,根据文件修改时间为您添加这样的值。

    • 使用隐身浏览器窗口(其他浏览器中的隐私浏览模式)强制您的浏览器忽略特定会话的缓存。每次打开新的隐身标签或窗口时,该会话的缓存都应该失效。

    【讨论】:

    • 嘿,你的回答奏效了。但我想提一下,从你的第二点开始的片段并没有说明把它放在哪里,而且它也缺少导入语句。所以也许对于来这里的人来说,只是提到这一点,可以帮助减少谷歌搜索的时间。 import os from flask import url_for
    【解决方案3】:

    请使用ctrl + f5 因为当您使用简单的 refresh 时,它会显示缓存中的数据,但是当您使用 ctrl + f5 时,它会呈现新数据

    【讨论】:

      【解决方案4】:

      我猜这是因为您的浏览器会捕获 CSS 文件。实际上,浏览器无法检测到您的更改,除非您通过按 Ctrl+F5 手动刷新页面并强制浏览器刷新资源。

      更新 1:

      唯一的解决此问题的一种方法是在您的 CSS/JavaScript 文件中添加一个随机生成的后缀,并在您对文件进行更改时更改这些值。这样,浏览器会捕获最新的 CSS 文件并忽略以前的文件。

      【讨论】:

      • 这不是唯一的解决方法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      • 2020-02-01
      • 2021-12-21
      • 2020-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多