我在Flask webapp中使用Jinja2在静态文件夹中将一个测试图标保存为favicon.ico。然后我将其添加到HTML文件中:
<link rel="shortcut icon" href="{{ url_for('static', filename='favico.ico') }}">
然后,我从静态文件夹中删除了favicon.ico文件,并添加了一个新的favicon,并将其命名为favicon.ico。然后,它会自动更新到我刚刚删除的前一个收藏夹图像。当我将文件名更改为其他名称时,它将呈现正确的图标,例如favico.ico。
此文件夹是否按名称缓存先前的收藏夹文件?如果是这样,我该如何清除?我正在运行Windows 10 Home。
答案 0 :(得分:0)
这可能与您使用的浏览器有关,因为某些浏览器会缓存静态文件以快速加载Web。大多数情况下发生在镀铬中。尝试在firefox上测试您的网站。
答案 1 :(得分:0)
可能是由于烧瓶或浏览器将其保存在缓存中的两个原因所致。
将此添加到您的application.py
:
app.config["CACHE_TYPE"] = "null"
cache.init_app(app)
OR
尝试清除浏览器缓存和Cookie。
如果仍然无法正常运行,请尝试检查您是否使用了正确的名称(您在说favicon.ico
,但在链接中写了favico.ico
。
答案 2 :(得分:0)
与@Ankur's answered一样,大多数现代浏览器都希望缓存静态文件以进行网络加载。
因此您可以添加包含静态文件FileInfo的查询字符串。
我的解决方案是在flask.url_for
中重写app.context_processor
,这将为静态文件添加时间戳。
例如:/static/index.js
==> /static/index.js?ts=${MODIFIED_TIME}
这是我的代码:
```python
import os
from flask import Flask
app = Flask(__name__)
@app.context_processor
def override_url_for():
return dict(url_for=dated_url_for)
def dated_url_for(endpoint, **values):
if endpoint == 'static':
filename = values.get('filename', None)
if filename is not None:
path = os.path.join(app.root_path, endpoint, filename)
values['ts'] = int(os.stat(path).st_mtime)
return url_for(endpoint, **values)
```
此外,您可以使用文件的md5sum代替时间戳,只需根据需要进行自定义即可。
:)